【问题标题】:Why this Android handler not working?为什么这个 Android 处理程序不起作用?
【发布时间】:2015-09-22 02:38:24
【问题描述】:

如下所示,我创建了 2 个内部类,它们都扩展了 Handler。我已经阅读了Android源文件中的代码,发现Handler.sendEmptyMessage()只在Looper的消息队列中加入了消息。

public class MainActivity extends Activity{
    private Handler handler = new Handler(Looper.getMainLooper()){
        public void handleMessage(Message msg){
            //handle method1
        }
    }
    ......
}

public class MyService extends Service{
    private Handler handler = new Handler(Looper.getMainLooper());

    public void test(){
        handler.sendEmptyMessage(0x00);
    }
    ......
}

所以,我很困惑为什么MainActivity 中的第一个Handler 不能处理来自MyService 中的第二个Handler 的消息,当使用相同的looper 构造时?

【问题讨论】:

  • 如果您想将消息从您的服务发送到您的活动,这不是正确的方法。您可以查看:stackoverflow.com/questions/4300291/… 了解更多信息。
  • @Rotem 你能告诉我如果我有多个与同一个looper相关联的处理程序会发生什么吗?
  • 您不能在处理程序之间进行通信,每个处理程序都有自己的消息队列 - 在这里回答:stackoverflow.com/questions/15538270/…

标签: android


【解决方案1】:

您无法在处理程序之间进行通信,每个处理程序都有自己的消息队列 - 如此处回答:

Handlers initialized with Looper.getMainLooper() does not respond to message callbacks

【讨论】:

  • android.os.handler 我无法确保每个处理程序都有自己的消息队列。在源代码中,mQueue = mLooper.mQueue .
  • 这不是他自己的,它是线程的消息队列,每个处理程序都与单个线程相关联。我理解你想要做什么,但它不应该像这样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 2016-04-20
  • 2017-05-02
  • 2018-06-09
  • 2021-10-29
  • 2020-03-21
  • 2015-05-21
相关资源
最近更新 更多