如何从Intent Service向Activity发送消息

3
基本上,我有一个带有进度对话框的活动,我正在向Intent发送一条消息,以从互联网加载所有数据而不在应用程序中出现任何问题。然而,我能够向服务发送消息,但我无法重新发送消息到活动。
我如何做?
以下是我向服务发送消息的方法:
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);

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

3个回答

2
请尝试以下方法:
  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可能未被初始化。 - Fringo
将您的Handler声明为final,例如private final Handler handler = new Handler() - GrIsHu
@GrlsHu 但是你没有回答我的问题,我怎么才能接收到消息呢? - Fringo

0

使用

handler.dispatchMessage();

发送空消息。将处理程序声明为静态,并通过类名访问它,或者只需创建类的对象,然后访问它。

我认为你也可以使用

handler.SendEmptyMessage();


0

这里是您的确切解决方案,

问题已经在此处得到解决 从IntentService发送消息到Activity

为了更好地理解,这里提供一个工作示例,您可以直接使用它进行实现前往此处

如果对您有用,请标记为“OK”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接