如何从multidex应用程序类(从multidex应用程序扩展的类)中收听自定义广播接收器?我已经制作了这样的定制广播接收器:
class CustomReceiver extends BroadcastReceiver{
//some methods
}
但是我如何从Application类中收听广播。
答案 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()等方法。然后,您可以使用这些方法注册和取消注册广播。