Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当用户关闭设备电源时,是否有方法接收通知?_Android_Broadcastreceiver - Fatal编程技术网

Android 当用户关闭设备电源时,是否有方法接收通知?

Android 当用户关闭设备电源时,是否有方法接收通知?,android,broadcastreceiver,Android,Broadcastreceiver,我需要知道用户何时关机。是否有任何广播(或类似广播)会在用户手机关机时发出通知?您可以使用在手机即将关机时广播的。文件说: 应用程序通常不需要处理此问题,因为前台活动也将暂停 换句话说,如果您适当地响应活动的所有生命周期事件,则无需使用此选项,除非您确实希望执行与关闭相关的特定操作 ACTION\u SHUTDOWNIntent是在API级别4中引入的,换句话说它只能在运行Android 1.6或更高版本的手机上发送 你会用一个陷阱捕捉广播。它看起来像这样: public class Shutd

我需要知道用户何时关机。是否有任何广播(或类似广播)会在用户手机关机时发出通知?

您可以使用在手机即将关机时广播的。文件说:

应用程序通常不需要处理此问题,因为前台活动也将暂停

换句话说,如果您适当地响应活动的所有生命周期事件,则无需使用此选项,除非您确实希望执行与关闭相关的特定操作

ACTION\u SHUTDOWN
Intent是在API级别4中引入的,换句话说它只能在运行Android 1.6或更高版本的手机上发送

你会用一个陷阱捕捉广播。它看起来像这样:

public class ShutdownReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //Insert code here
    }

}
您的清单中还需要一个条目,如下所示:

<receiver android:name=".ShutdownReceiver">
  <intent-filter>
    <action android:name="android.intent.action.ACTION_SHUTDOWN" />
  </intent-filter>
</receiver>


手机重新启动时会发送此信息。

除了关闭操作
之外,您还应该将安卓.intent.ACTION.QUICKBOOT_关机添加到您的意图过滤器中。
ACTION\u SHUTDOWN
并非总是在某些HTC设备(如Evo 4g)上广播。

更具体地说,如果您选择重新启动,
ACTION\u SHUTDOWN
将被广播,但如果您选择关机,
QUICKBOOT\u POWEROFF
将被广播。

详细介绍Dave Webb所说的处理此问题的适当方法:

您可以覆盖Android活动生命周期功能

protected void onPause();
protected void onResume();
在大多数情况下,实现这些应该足够了,并且不需要专门处理“断电”事件


在和的答案中有更多的信息。

@BenIOs:就像你的代码不再运行一样,开玩笑!如果你让你的应用程序写在一个文件上,或者每n分钟做一次ajax调用,然后进行分析,可能会有一些日志写在某个地方。如果没有,我会非常惊讶。非常离题:这句话让我想到了BeOS函数
is\u computer\u on()
:当计算机打开时,它返回1,否则结果是未定义的。这正是我想要的。非常感谢。我做了与上面相同的操作,但没有发生任何事情…我添加了Log.v(“关机事件”,“设备关机”);但在这件事上无能为力,请给出任何建议。。thanks@DeepSan-我会确保您的清单入口指向正确的类。是否有任何保证您的代码将有足够的时间完成此操作?也就是说,关机是否会继续,或者它会等待/阻止你的接收器完成它需要做的任何事情?@matt5784在这个链接中查看关机过程的源代码。在关闭收音机、卸下fs等之前,他们会给你10秒钟的时间来完成你需要做的事情: