42

我需要知道用户何时关闭他/她的手机。当用户的手机关机时,是否有任何广播(或类似的)通知?

4

3 回答 3

68

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

应用程序通常不需要处理这个问题,因为前台活动也会暂停。

换句话说,如果您适当地响应 Activity 的所有生命周期事件,则无需使用它,除非您真的想做与关闭相关的特定操作。

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

您将使用BroadcastReceiver. 它看起来像这样:

public class ShutdownReceiver extends BroadcastReceiver {

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

}

您还需要在 Manifest 中添加一个条目,如下所示:

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

根据您的操作,另一种选择是使用重新启动手机时发送的ACTION_BOOT_COMPLETEDIntent 。

于 2010-02-03T06:46:54.557 回答
20

除了ACTION_SHUTDOWN,您应该添加android.intent.action.QUICKBOOT_POWEROFF到您的意图过滤器。
ACTION_SHUTDOWN并不总是在某些 HTC 设备(例如 Evo 4g)上播放。
具体来说,如果你选择重启,ACTION_SHUTDOWN就是广播,如果你选择关机,QUICKBOOT_POWEROFF就是广播。

于 2011-10-27T18:08:02.483 回答
0

扩展 Dave Webb 所说的是处理此问题的适当方法:

您可以覆盖 Android Activity 生命周期函数

protected void onPause();
protected void onResume();

在大多数情况下,实现这些就足够了,并且不需要您专门处理“断电”事件。

Android 网站和此生命周期问题的答案中提供了更多信息。

于 2013-05-22T08:59:10.637 回答