从服务到活动的Android广播

Ada*_*dam 16 android broadcastreceiver

我正在尝试从服务发送广播到活动.我可以验证广播是从服务中发送的,但是活动不会发送任何内容.

这是相关的服务代码:

   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);
Run Code Online (Sandbox Code Playgroud)

并且活动类中的接收端:

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");
         }
   }
}
Run Code Online (Sandbox Code Playgroud)

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

我很难过为什么它不会记录.任何东西.

任何见解?

编辑
注册如下:

 registerReceiver(messageReceiver, new IntentFilter(IMService.NEW_MESSAGE));
Run Code Online (Sandbox Code Playgroud)

其中"messageReceiver"定义为

private newMessage messageReceiver = new newMessage();
Run Code Online (Sandbox Code Playgroud)

IMService.NEW_MESSAGE只是一个string ="NewMessage"

Ada*_*dam 10

我不确定它是否特定于设置,或者它是否是一般的修复,但是移动register/unregisteronResume/onPause _respectively_并且没有注册在onCreate解决了我的问题.