如何使用Handler / runnable?

时间:2014-08-01 14:52:56

标签: android handler runnable

我希望我的代码可以运行一分钟.. 谁能解释我怎么做?

private Handler myHandler;
    private Runnable myRunnable = new Runnable() {
    @Override
    public void run() {
      //DO WORK
      Toast.makeText(getApplicationContext(), " Hello",Toast.LENGTH_SHORT).show();
      myHandler.postDelayed(this,60000);
        }
    };      
 @Override
 public void onCreate() {
 super.onCreate();      
             //call function
             myHandler = new Handler();
            //
        myHandler.postDelayed(myRunnable,60000);

 Log.d(this.getClass().getName(), "onCreate");
}

2 个答案:

答案 0 :(得分:0)

Timer是一个有效的解决方案,但它不会在UI线程上执行。你的代码告诉我这就是你想要的。

最简单的方法是通过处理程序和重复任务:

final Handler handler = new Handler(); // ui thread handler
handler.postDelayed(new MyRunnable(handler), INETRVAL);

其中:

class MyRunnable implements Runnable {
   @Override
   public void run() {
       // do periodical action here

       // and.. repeat your task <------------
       handler.postDelayed(new MyRunnable(handler), INETRVAL);
   }
}

答案 1 :(得分:0)

观看此http://goo.gl/DRdaUi

BTW 60秒是线程运行的很长时间!如果你有一些运行这么长的东西考虑使用Android服务而不是线程。

你还需要使用处理程序吗?再想一想,大部分时间都没有必要。 AsyncTask是Android多线程的第一选择,它更简单。除非AsyncTask无法处理你的想法,否则不要使用任何其他方法。