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/unregister到onResume/onPause _respectively_并且没有注册在onCreate解决了我的问题.
| 归档时间: |
|
| 查看次数: |
22941 次 |
| 最近记录: |