从multidex应用程序收听广播接收器

时间:2017-11-22 14:48:51

标签: android broadcastreceiver

如何从multidex应用程序类(从multidex应用程序扩展的类)中收听自定义广播接收器?我已经制作了这样的定制广播接收器:

class CustomReceiver extends BroadcastReceiver{ 
                        //some methods 
                       }

但是我如何从Application类中收听广播。

2 个答案:

答案 0 :(得分:0)

嗯,简单地回答你的问题“我如何收听来自Application类的广播”:

class CustomReceiver extends BroadcastReceiver { 
     @Override
     public void onReceive(Context context, Intent intent){
        //TODO HANDLE BROADCAST
     }
 }
   class MyApplication extends Application {
        @Override
        public void onCreate(){
           super.onCreate();
           registerReceiver(new CustomReceiver());
        }
   }

这在技术上“回答了问题”。但是,正如我已经说过的那样,这是错误的,你不应该这样做。请注意,我没有保留对CustomReceiver的引用以进行取消注册。这是因为Application对象中没有等效的onDestroy(),因此您可以取消注册BroadcastReceiver。通过这种方式,您可以保证系统必须清除BroadcastReceiver泄漏。

更好的方法是在Service的onCreate()被点击时启动注册BroadcastReceiver的{​​{1}},在我的清单中注册接收器评价。

答案 1 :(得分:0)

经过大量研究后找到了解决方案。 在您的应用程序类中实现Application.ActivityLifecycleCallbacks 这将使您可以访问onActivityPaused(),onActivityStarted()和onActivityResume()以及onActivityStopped()等方法。然后,您可以使用这些方法注册和取消注册广播。