从Service里发一条广播到Fragment里,Fragment不打开怎么就接收不到呢?

charlesxu 2015-05-23 02:04:54
下面这种方法从service里发消息时,Fragment打开时可以接受到消息。但是Service发消息时,如果Fragment还没有打开,过一会再打开Fragment时这条消息就接收不到了。

我理解发送广播应该是把消息发送到系统里,那我的Fragment随时打开,都可以接受到这条消息吧?难道发送的是即时消息,发出来后没人接受就销毁了?

IntentService发送广播如下:

public class Service extends IntentService {
protected void onHandleIntent(Intent intent) {
Intent intent = new Intent();
intent.setAction("com.haha.123");
intent.putExtra("msg", "aaa");
getBaseContext().sendBroadcast(intent_);
}
}


fragment里接受广播的代码如下

public class frag01 extends Fragment{
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent){
}
};
@Override
public void onStart() {
super.onStart();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.haha.123");
getActivity().getBaseContext().registerReceiver(mReceiver , intentFilter);
}

@Override
public void onStop() {
getActivity().getBaseContext().unregisterReceiver(mReceiver );
super.onStop();
}
}

...全文
348 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oaosj000 2015-09-21
  • 打赏
  • 举报
回复
为什么不用接口回调
mmsx 2015-09-20
  • 打赏
  • 举报
回复
建议使用 Android EventBus发布/订阅事件总线 http://blog.csdn.net/qq_16064871/article/details/46489255
逆转星河 2015-09-20
  • 打赏
  • 举报
回复
Fragment生命周期和activity有点类似,一旦过了那页,就进入onStop()状态,休眠了,收不到消息。你可以修改加载你的fragement的adapter方法,让那页翻过去了不进入onStop()状态,或者给Fragment价格后台AsyncTask,让它销毁了还能接受广播
vigiles 2015-09-19
  • 打赏
  • 举报
回复
试试粘滞广播
sagittarius1988 2015-05-23
  • 打赏
  • 举报
回复
过了这个村,就没这个店了。道理你懂的吧

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧