【问题标题】:How to send a message from an Intent Service to an activity [duplicate]如何将消息从意图服务发送到活动 [重复]
【发布时间】:2013-12-27 07:23:19
【问题描述】:

基本上,我有一个带有进度对话框的活动,我正在向 Intent 发送一条消息,以从 Internet 加载所有数据,而不会在应用程序中出现任何问题。但是,我能够向服务发送消息,但无法将消息重新发送给活动。 怎么办?

这是我向服务发送消息的方式:

final Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {

    }
};
final Intent intent = new Intent(this, FillingDatabase.class);
final Messenger messenger = new Messenger(handler);
intent.putExtra("messenger", messenger);
startService(intent);

这是我从服务接收消息的方式:

messenger = (Messenger) intent.getParcelableExtra("messenger");
        message = Message.obtain(null, 1234);
            messenger.send(message);

但我不知道如何在活动中接收该消息,有人可以解释一下方法吗? 谢谢!

【问题讨论】:

    标签: android android-activity intentservice


    【解决方案1】:

    尝试如下:

      private Handler handler = new Handler() 
    {
        public void handleMessage(Message message) 
        {
           final Intent intent = new Intent(this, FillingDatabase.class);
           final Messenger messenger = new Messenger(handler);
           intent.putExtra("messenger", messenger);
           startService(intent);
        };
    };
    

    【讨论】:

    • @GrlsHu 我收到了这个错误:局部变量处理程序可能没有被初始化
    • 将您的Handler 设为final 就像private final Handler handler = new Handler() 一样
    • @GrlsHu 但你没有回答我的问题,我怎样才能收到消息??
    【解决方案2】:

    使用

    handler.dispatchMessage();

    并发送一个空消息。声明处理程序静态并通过类名访问它,或者简单地创建类的对象然后访问它。

    我觉得你也可以用

    handler.SendEmptyMessage();

    【讨论】:

      【解决方案3】:

      你的确切解决方案来了,

      问题已经在这里解决了sending message from IntentService to Activity

      为了更好地理解这一点,这里有一个工作示例,您可以直接使用它来实现 Go here

      如果适合您,请标记为 OK。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-11
        • 2013-02-08
        • 2011-11-08
        • 2011-05-15
        • 1970-01-01
        • 1970-01-01
        • 2013-07-28
        • 1970-01-01
        相关资源
        最近更新 更多