线程中的定期消息

时间:2011-07-01 07:54:32

标签: android handler

我有一个活动(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;
                }
            }
        }
    };
}

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

我终于找到了sendEmptyMessageDelayed(ALIVE,10000)

的解决方案

长话短说,我从我的UI线程调用一次ALIVE,在sendAlive()方法结束时,我发送一个delayedMessage给线程本身,在X毫秒后重新调用ALIVE。

使用此解决方案无需新线程或计时器。

答案 1 :(得分:0)

正确的解决方案实际上取决于你想要放在一起的东西......

This用于对计时器执行操作以及如何使用延迟的帖子(在计划上执行的首选方式,因为它不使用计时器的线程)。这是一个很好的写作,它们包括原因。

希望这会有所帮助。