应用程序终止后,Receiver 是否会收听?

Does Receiver listen after app has been terminated?

我最近查看了 this question 并且我在代码中使用内部 Activity 函数内部的 registerReceiver(new BroadcastReceiver() ... 方法注册了一个新的接收器(例如在某些按钮点击时调用)

我的问题是,当应用程序被杀死时,接收器是否仍然处于活动状态?如果 activity 完成自身并启动另一个 activity 怎么样?如果它只是经历 onStop() onStart() 循环或 onPause() onResume() 怎么办?

我应该运行 registerReceiver 使用某些服务吗?但是话又说回来,当我的应用程序被某个任务管理器杀死时,这不会也杀死我的服务吗?

关于 Activity 生命周期,在 onResume() 中注册接收器并在 onPause() 中取消注册。

private MyReceiver mReciever;

...
...

@Override
public void onResume(){
    super.onResume();

    /* Create the receiver if it doesn't exist already */
    if(mReceiver == null){
        mReceiver = new MyReceiver();
        IntentFilter filter = new IntentFilter("SOME_FILTER");
        registerReceiver(mSentReceiver, filter);
    }
}

@Override
public void onPause(){
    super.onPause();

    /* Unregister the receiver if it isn't null */
    if(mReceiver != null){
        unregisterReceiver(mReceiver);
    }
}

如果应用程序被终止,接收器将不会激活(发生这种情况时一切都会丢失)。但是,如果应用程序在 foreground/background 中并且您注册它的 Activity/Fragment 尚未被垃圾回收,它仍然处于活动状态。

如果接收者也是通过 AndroidManifest 注册的,则接收者对所有 Activities/Fragments 都是全局活动的。当您希望它只对特定的 Activity/Fragment 有效时,您想在 Activity/Fragment 中注册接收器(两者相互耦合/依赖)。但是,如果活动 fragment/Activity.

上没有依赖项,您将使用 AndroidManifest 声明