为了账号安全,请及时绑定邮箱和手机立即绑定

android开发 service 和activity 广播问题

android开发 service 和activity 广播问题

侃侃无极 2019-03-13 10:09:05
android开发 service 和activity 广播问题
查看完整描述

2 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

这里我们先假定service发出内容时候的Action为ActionS。


如果activity里没有动态注册监听service发出的ActionS的广播, 即使Activity当前在使用中也不会得到通知, 更不用说未启动的Activity来捕获这个通知了。


要捕获这个字符串有两种方式, 分别如下

  1. 在AndroidManifest.xml中注册<receiver android:name="YourBroadcastReceiver" >   <intent-filter>       <action android:name="ActionS" />   </intent-filter></receiver>这样, 一旦有定义的ActionS发出来, YourBroadcastReceiver的onReceive方法就会回调了,这样的监听,不需要你的app已经在运行。你在onReceive方法里拦截处理。


 2.在Activity中动态创建监听器, onCreate()中生成一个IntentFilter对象

           IntentFilter filter=new IntentFilter();           //为IntentFilter添加一个ActionS           

           filter.addAction(ActionS);            yourBroadcastReceiver = new YourBroadcastReceiver();

            registerReceiver(yourBroadcastReceiver, filter);

            在onDestroy的时候去注册           unregisterReceiver(yourBroadcastReceiver);这样的方式只有在Activity生命周期onCreate()-onDestroy()之间有效, 在YourBroadcastReceiver.onReceive()方法里拦截处理。



查看完整回答
反对 回复 2019-03-22
?
跃然一笑

TA贡献1826条经验 获得超6个赞

广播的周期很短,你不能在广播内做耗时操作,而服务却能。广播的作用是帮你传递一些通知,例如你写了一个开机广播,一旦手机开机,广播就发一则通知告诉手机(你写的程序),手机(你写的程序,某个类,某句代码)启动服务,这个时候在服务里面可以做你想做的耗时操作,例如去请求服务器,加载数据。广播和服务的区别就是广播周期短,不能做耗时操作,服务是长时间连接,可以做耗时操作,例如用服务控制音乐的播放等。广播需要注册,有两种方式,一个在配置文件里面,一个是代码注册、服务是写一个类继承服务,然后在里面写你的操作,外围实例化服务,去启动服务。

查看完整回答
反对 回复 2019-03-22
  • 2 回答
  • 0 关注
  • 902 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信