Android关闭/关闭广播接收器无法启动

时间:2013-12-14 14:57:58

标签: android broadcastreceiver

我想创建一个流量小部件,并在每次设备关闭时存储使用的流量。问题是我无法触发关机接收器。

我使用了以下代码:

    IntentFilter actionShutdown = new IntentFilter("android.intent.action.ACTION_SHUTDOWN");
    IntentFilter quickPOFF = new IntentFilter("android.intent.action.QUICKBOOT_POWEROFF");
    TrafficDataUpdate trafficDataUpdate = new TrafficDataUpdate();
    getContext().registerReceiver(trafficDataUpdate, actionShutdown);
    getContext().registerReceiver(trafficDataUpdate, quickPOFF);

我也试过在清单中声明的​​接收器,但没有成功:

        <receiver android:name=".receivers.TrafficDataUpdate">
        <intent-filter>
            <action android:name="android.intent.action.ACTION_SHUTDOWN"/>
            <action android:name="android.intent.action.QUICKBOOT_POWEROFF"/>
        </intent-filter>
    </receiver>

你有什么建议吗?

有人可以推荐我另一种计算数据流量的方法,没有关机接收器吗?

1 个答案:

答案 0 :(得分:4)

使用一个IntentFilter而不是两个,教它听两个动作。您的第二个registerReceiver()隐式取消注册第一个接收者。

另请注意,只有当您的进程仍在内存中时,这才会起作用。通常,您的进程不在内存中,并且用户的最佳利益是您的进程不在内存中。请将此实现替换为接收器在清单中注册的实现,如以下StackOverflow线程所示: