android Handler等待消息一段时间

时间:2016-11-21 09:27:22

标签: android

我有一个场景,其中一个线程等待Looper.Prepare()和Looper.loop()的消息。在UI中单击按钮时,向Handler发送消息,通知单击按钮。如果没有按钮点击2分钟,我想打破弯针,如何实现呢?我尝试使用Timer和timertask但没有任何反应

非ui线程

中的代码如下
   Looper.prepare();
      uiHandler = new Handler() {
      public void handleMessage(Message msg) {
      // Act on the message
        if (msg.obj.contains("DONE")) {
        Toast.makeText(MainActivity.this, "Done task",                   
                 Toast.LENGTH_LONG).show();
         }     
      }
     }
  Looper.loop();

来自UI线程:

 btnDone.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Message msg = Message.obtain();
            msg.obj = "DONE";
            uiHandler.sendMessage(msg);
        }
    });

1 个答案:

答案 0 :(得分:0)

您可以通过使用处理程序postDelayed方法

来实现此目的
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        Toast.makeText(MainActivity.this, "Done task",                   
             Toast.LENGTH_LONG).show();
    }
}
uihandler.postDelayed(runnable , 2*60*1000);

并在onClickListener中使用removeCallback方法

uiHandler.removeCallbacks(runnable);