我正在应用程序的 Application 类中注册广播接收器' onCreate()。只要应用程序的进程处于活动状态,我基本上希望接收器处于活动状态。在这种情况下,应用程序的任何组件被触发都会导致接收器自动注册,并且只要进程还活着,就不会被销毁,因为我当时在 Application 类中注册。
应用类
@Override
public void onCreate() {
super.onCreate();
Log.i(TAG, "Registering broadcast receivers");
final Context context = getApplicationContext();
MyReceiver.register(context);
}
广播接收器类:
public class MyReceiver extends BroadcastReceiver {
public static void register(final Context context) {
final IntentFilter intentFilter = new IntentFilter("My Action");
final BroadcastReceiver receiver = new MyReceiver();
context.registerReceiver(receiver, intentFilter);
}
}
我在文档中读到,为了防止接收器泄漏,我们应该在我们正在注册的那个的相应生命周期方法中取消注册接收器。但是文档讨论了在Activity类中注册接收器。这同样适用于在Application课堂上注册接收者吗?这里的区别似乎是即使活动被破坏,应用程序进程仍然处于活动状态,因此泄漏是有意义的。但是,如果我在Application课堂上注册,我唯一希望我的接收器取消注册的时间是进程被终止时。进程终止后是否有泄漏的可能性?