2 回答
TA贡献1833条经验 获得超4个赞
这里我们先假定service发出内容时候的Action为ActionS。
如果activity里没有动态注册监听service发出的ActionS的广播, 即使Activity当前在使用中也不会得到通知, 更不用说未启动的Activity来捕获这个通知了。
要捕获这个字符串有两种方式, 分别如下
在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()方法里拦截处理。
TA贡献1826条经验 获得超6个赞
广播的周期很短,你不能在广播内做耗时操作,而服务却能。广播的作用是帮你传递一些通知,例如你写了一个开机广播,一旦手机开机,广播就发一则通知告诉手机(你写的程序),手机(你写的程序,某个类,某句代码)启动服务,这个时候在服务里面可以做你想做的耗时操作,例如去请求服务器,加载数据。广播和服务的区别就是广播周期短,不能做耗时操作,服务是长时间连接,可以做耗时操作,例如用服务控制音乐的播放等。广播需要注册,有两种方式,一个在配置文件里面,一个是代码注册、服务是写一个类继承服务,然后在里面写你的操作,外围实例化服务,去启动服务。
- 2 回答
- 0 关注
- 902 浏览
添加回答
举报