Android 中止广播接收器

Posted

技术标签:

【中文标题】Android 中止广播接收器【英文标题】:Android Abort BroadcastReceiver 【发布时间】:2011-09-13 07:28:36 【问题描述】:

我试图在退出应用程序后阻止 BroadcastReceiver 出现。到目前为止,我只让它在安装应用程序时显示 Toast。它工作得非常好,除了如果我退出应用程序接收器仍然处于活动状态。 这是我来自 androidManifest 的接收器代码:

<receiver android:name=".MyBrowdcastreceiver" android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_ADDED" />
            <action android:name="android.intent.action.PACKAGE_INSTALL" />
            <data android:scheme="package" />
        </intent-filter>
    </receiver>

我想知道我应该在我的主 Activity 中的 onDestroy() 或 onStop() 方法中添加什么,这会导致接收器停止。

谢谢。

【问题讨论】:

【参考方案1】:

您已在清单文件中注册接收器,即使您的应用未运行,该接收器也会收到通知。您可以做两件事来满足您的需求:

    您需要以编程方式注册、注销接收器。

    您可以采用布尔值,如果应用程序正在运行,您将设置为 true,否则为 false。您可以在 BraodcastReceiver 的 onReceive() 方法中使用此布尔值,您需要检查布尔值并在布尔值为真时执行您的操作。

【讨论】:

我尝试以这种方式以编程方式注册接收器:br = new MyBrowdcastreceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL); getApplicationContext().registerReceiver(br, intentFilter);但是现在吐司不显示了 bebug 并检查您是否在 onReceive() 方法中收到调用。 就是这样......我这样做了,但它没有进入 onReceive() 方法。

以上是关于Android 中止广播接收器的主要内容,如果未能解决你的问题,请参考以下文章

Android 第六讲 广播接收器和服务

Android之广播

Android本地广播的使用

Android广播接收器和Activity间传递数据

Android 发送本地广播 以及创建广播接收器

Android广播BroadcastReceiver