android开发 service 和activity 广播问题

2025-04-26 19:30:09
推荐回答(1个)
回答1:

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


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


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

  1. 在AndroidManifest.xml中注册

       
           
       


    这样, 一旦有定义的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()方法里拦截处理。