【问题标题】:Android shutdown/power off broadcast receiver not startingAndroid关机/关机广播接收器未启动
【发布时间】:2013-12-14 14:57:57
【问题描述】:

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

我使用了以下代码:

    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>

您有什么建议吗?

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

【问题讨论】:

    标签: android broadcastreceiver


    【解决方案1】:

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

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

    【讨论】:

    • 我也尝试了清单。我更新了我的问题。我认为将进程保存在内存中没有问题。谢谢。
    • @CommonsWare 你能看看这个问题吗?它与华为设备类似,但适用于华为设备。 stackoverflow.com/questions/58304798/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多