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

我使用了以下代码:

    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);

我也尝试使用 list 中声明的​​接收器,但没有成功:
        <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>

你有什么建议吗?

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

最佳答案

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

另请注意,这仅在您的进程仍在内存中时才有效。通常,您的进程不在内存中,并且您的进程不在内存中符合用户的最佳利益。请将此实现替换为在 list 中注册接收器的实现,如以下 StackOverflow 线程所示:

  • Android ACTION_SHUTDOWN Broadcast not working
  • BroadcastReceiver's behaviour for ACTION_SHUTDOWN
  • handling phone shutdown event in android
  • 关于Android 关机/关机广播接收器未启动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20584762/

    10-12 00:18