Android Timer 更好方法

原文:http://blog.csdn.net/vrix/article/details/6337589

Android 的Timer 一般如下面所写

Timer timer = new Timer();
TimerTask task = new TimerTask() {
    public void run() {
        Message message = new Message();
        message.what = 1;
        handler.sendMessage(message);  

    }  

};  

final Handler handler = new Handler() {  

    public void handleMessage(Message msg) {
        switch (msg.what) {
        case 1:
            Log.e("Timer", "Timer");
            update();
            break;
        }
        super.handleMessage(msg);
    }  

};  

protected void onDestroy() {
    if (timer != null) {
        timer.cancel();
        timer = null;
    }
    super.onDestroy();
}  

最重要一点是timer.schedule(task, 1000, 5000);如果设置为timer.schedule(task, 5000)是不会工作的。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.main);
                               timer.schedule(task, 1000, 5000);
                }  

但更好的方法是通过下面的代码

private Handler handler = new Handler();  

private Runnable runnable = new Runnable() {  

    public void run() {
        update();
        handler.postDelayed(this, 1000);
    }  

};
 

开始Timer

handler.postDelayed(runnable, 1000);

停止Timer

handler.removeCallbacks(runnable);
时间: 2024-09-20 14:54:16

Android Timer 更好方法的相关文章

Android 比Timer更好方法

 java代码: Timer timer = new Timer( ); TimerTask task = new TimerTask( ) { public void run ( ) { Message message = new Message( ); message.what = 1; handler.sendMessage(message); } }; final Handler handler = new Handler( ) { public void handleMessage(M

备份和恢复Android手机分区的方法

手机设备能正常开机的情况,可以通过df进行备份.下面以备份boot分区为例介绍如何备份和恢复分区内容. 1查看boot属于哪个分区 2查看boot分区的大小 3用dd命令将分区boot复制到data分区下 4将手机下databoot 拷贝到本机 5恢复boot分区内容 1查看boot属于哪个分区 进入手机路径dev/block/platform/7824900.sdhci/by-name输入查看命令ll. 其中7824900.sdhci在不同手机可能不一样. root@M1:/ # ls dev

Android结束进程的方法详解_Android

本文实例讲述了Android结束进程的方法.分享给大家供大家参考,具体如下: 最近在做一个类似与任务管理器的东西,里面有个功能,可以通过这个管理器结束掉其他的进程. 在Android平台下,结束进程的方法还是比较多的.首先指明,此处的"结束进程",包含了结束自身进程和结束其他进程两个方面.通过查阅SDK文档和网上的一些资料,自己找到一些结束进程的方法.在这里做一些归纳和总结,文章的部分信息有可能来自网上已有的文章和帖子,由于过了比较长时间,所以若发现本文与其他文章雷同,请谅解. 一.结

Android结束进程的方法详解

本文实例讲述了Android结束进程的方法.分享给大家供大家参考,具体如下: 最近在做一个类似与任务管理器的东西,里面有个功能,可以通过这个管理器结束掉其他的进程. 在Android平台下,结束进程的方法还是比较多的.首先指明,此处的"结束进程",包含了结束自身进程和结束其他进程两个方面.通过查阅SDK文档和网上的一些资料,自己找到一些结束进程的方法.在这里做一些归纳和总结,文章的部分信息有可能来自网上已有的文章和帖子,由于过了比较长时间,所以若发现本文与其他文章雷同,请谅解. 一.结

Android Parcelable接口使用方法详解

Android Parcelable接口使用方法详解 1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a static field called CREATOR, which is an object implementing

Android实现屏幕旋转方法总结

  Android实现屏幕旋转方法总结         这篇文章主要介绍了Android实现屏幕旋转方法,实例总结了屏幕旋转的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例总结了Android实现屏幕旋转方法.分享给大家供大家参考.具体如下: 在介绍之前,我们需要先了解默认情况下android屏幕旋转的机制: 默认情况下,当用户手机的重力感应器打开后,旋转屏幕方向,会导致当前activity发生onDestroy-> onCreate,这样会重新构造当前activity和界面布局

Android获取常用辅助方法(获取屏幕高度、宽度、密度、通知栏高度、截图)_Android

我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现.下面就分享一下Android中常用的一些辅助方法: 获取屏幕高度: /** * 获得屏幕高度 * @param context * @return * by Hankkin at:2015-10-07 21:15:59 */ public static int getScreenWidth(Context context) { WindowManager wm = (WindowManager) cont

Android界面刷新的方法分享_Android

Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用. Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面. 利用Handler刷新界面实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新:而在线程中通过sen

android开发-Android VideoView中getDuration()方法使用问题

问题描述 Android VideoView中getDuration()方法使用问题 Android VideoView中getDuration()方法使用问题: 调用videoView.getDuration()方法返回值为-1 VideoView.start()后调用videoView.getDuration()方法返回值也为-1, 视频开始播放后调用videoView.getDuration()方法返回值为视频的真实"长度", 有什么办法在播放前就可以获取视频的真实"长