关于Service和Broadcast的先后问题

关于Service和Broadcast的先后问题

假如我启动了一个Service 其中发起了一个广播   

但是这个广播还未被注册

那等到我注册对应的广播接收者后  还能收到上面那个Service发送的广播吗?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

收不到。如果你是设计者,觉得怎么设计才会更合理一些呢?收不到才合理呀。另:很多想法都可以自己亲自动手去尝试一下的。祝:学习愉快

  • Restar 提问者 #1
    主要是那个作业的问题... 作业要求中是需要在Application中一启动就启动一个查询的服务(因此我写在了onCreate方法里) 但是为了方便操作数据,因此我在ListView所在的那个Activity( MainActivity) 中的onCreate方法内注册了一个广播接受者(用来接收上面那个Service发送的广播) 因此 按照执行顺序来说, Application的onCreate是比MainActivity的onCreate早的...因此广播的发送(在Service中) 和广播接收者的注册(在MainActivity中) 先后顺序就无法保证...(我觉得应该是广播发送早的,可是我作业完成了也没有出现过bug..) 所以就有了以上的疑问.......... 现在的疑问是 如何更改我现有的设计,在功能实现不受影响的情况下,保证是注册先于发送呢?
    2018-04-19 13:49:11
小巧的蜗牛 2018-04-25 15:18:57

创建服务文件,在清单文件自动注册服务,开启服务,在服务oncreate方法中开启新的进程发送广播,然后在主文件中创建一个内部类动态注册接收广播。个人觉得,无需纠结先广播与服务的注册顺序,按照流程都就可以咯。

  • 提问者 Restar #1
    我是在服务中做的东西非常少(获取系统已安装的app信息)做完就发送广播了,然后这个服务的开启是在application类的,所以我觉得有点早,担心在后面注册的(在mainactivity中的onCreate中)广播接受者可能错过这一次广播。嘿嘿
    2018-04-25 18:17:03
好帮手慕雪 2018-04-19 14:11:32

你去代码中进行动态的startService()不就解决了嘛,先注册广播接收者,再启动服务。

  • 提问者 Restar #1
    hh主要是作业要求在app中启动服务,所以就很迷,换到mainactivity中方便好多,也容易捋清
    2018-04-19 14:14:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android数据通信开发与应用2018版
  • 参与学习           人
  • 提交作业       147    份
  • 解答问题       687    个

本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师