我有一个场景,其中一个线程等待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);
}
});
答案 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);