阅读71 返回首页    go 阿里云 go 技术社区[云栖]


Android Timer 更好方法

原文:https://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);  




最后更新:2017-04-02 22:16:28

  上一篇:go Hibernate中Id的table生成策略
  下一篇:go Redis资料汇总