【问题标题】:Android Broadcast from Service To Activity从服务到活动的 Android 广播
【发布时间】:2010-12-16 14:34:47
【问题描述】:

我正在尝试将广播从服务发送到活动。我可以验证广播是从服务内部发送的,但是 Activity 没有接收到任何东西。

这里是相关的服务代码:

   Intent i = new Intent(NEW_MESSAGE);  
   i.putExtra(FriendInfo.USERNAME, StringUtils.parseBareAddress(message.getFrom()));
   i.putExtra(FriendInfo.MESSAGE, message.getBody());
   i.putExtra("who", "1");
   sendBroadcast(i);

以及活动类中的接收端:

public class newMessage extends BroadcastReceiver 
{
@Override
   public void onReceive(Context context, Intent intent) 
   {    
    String action = intent.getAction();
       if(action.equalsIgnoreCase(IMService.NEW_MESSAGE)){    
          Bundle extra = intent.getExtras();
          String username = extra.getString(FriendInfo.USERNAME);   
          String message = extra.getString(FriendInfo.MESSAGE);
          String who = extra.getString("who");
         }
   }
}

BroadcastReceiver 在 Activity 中定义。我是在 Activity 的 onCreate 方法中注册接收器,而不是在 Manifest 文件中。

我很困惑为什么它不会录制。任何东西。

有什么见解吗?

编辑
注册过程如下:

 registerReceiver(messageReceiver, new IntentFilter(IMService.NEW_MESSAGE));

其中“messageReceiver”定义为

private newMessage messageReceiver = new newMessage();

IMService.NEW_MESSAGE 只是一个字符串 = "NewMessage"

【问题讨论】:

  • 如何注册接收器?
  • 在哪里以及如何在活动中声明 IntentFilter?
  • IntentFilter 不应该在这里参与活动,接收者在这里工作。
  • 噢,总是用 registerReceiver(aReceiver, aIntentFilter) 注册我的接收器;是坏方法吗?
  • @Vladimir @Franco 我正在使用 registerReceiver(messageReceiver, new IntentFilter(IMService.NEW_MESSAGE)); 注册接收器;

标签: android broadcastreceiver


【解决方案1】:

我不确定它是否特定于设置,或者它是否是一般的修复,但将 register/unregister 移动到 onResume/onPause _respectively_ 并且未在 onCreate 中注册解决了我的问题。

【讨论】:

  • 您可以在 AndroidManifest 中轻松注册接收器。
【解决方案2】:

试试这两件事:

  1. 使用清单文件注册接收器(但几乎没有帮助)
  2. 尝试将您的接收器设置为普通类,而不是内部类。

【讨论】:

  • 弗拉基米尔,感谢您的帮助。稍后我将把它移到它自己的班级 - 在你提到它之后考虑一下,这似乎是最好的主意。
【解决方案3】:

内部类广播接收器将无法处理广播(意味着它无法定位该类)。 所以让它成为一个单独的类

肯定会成功的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多