我有一个活动(myActivity)和一个线程(MyThread),两个都有一个允许我在UI线程和myCustomThread之间发送消息的处理程序。 现在我想定期(10秒)从MyActivity调用MyThread线程的ALIVE消息。我怎样才能做到这一点?
MyActivity:
public void onResume()
{
super.onResume();
this.thread = new MyThread(activityHandler);
this.threadHandler = this.thread.gethandler();
threadMessage = this.threadHandler.obtainMessage();
threadMessage.what = AUTH;
this.threadHandler.sendMessage(threadMessage);
}
MyThread:
@覆盖
public void run()
{
Looper.prepare();
this.threadHandler = initHandler();
this.message = this.activityHandler.obtainMessage();
this.message.what = CONNECTED;
activityHandler.sendMessage(this.message);
Looper.loop();
}
private Handler initHandler()
{
return new Handler() {
public void handleMessage(Message msg)
{
switch(msg.what)
{
case AUTH :
{
auth();
break;
}
case ALIVE :
{
sendAlive();
break;
}
}
}
};
}
感谢您的帮助
答案 0 :(得分:0)
我终于找到了sendEmptyMessageDelayed(ALIVE,10000)
的解决方案长话短说,我从我的UI线程调用一次ALIVE,在sendAlive()方法结束时,我发送一个delayedMessage给线程本身,在X毫秒后重新调用ALIVE。
使用此解决方案无需新线程或计时器。
答案 1 :(得分:0)
正确的解决方案实际上取决于你想要放在一起的东西......
This用于对计时器执行操作以及如何使用延迟的帖子(在计划上执行的首选方式,因为它不使用计时器的线程)。这是一个很好的写作,它们包括原因。
希望这会有所帮助。