我需要知道用户何时关闭他/她的手机。当用户的手机关机时,是否有任何广播(或类似的)通知?
3 回答
您可以使用手机即将关机时广播的ACTION_SHUTDOWN
Intent 。文档说:
应用程序通常不需要处理这个问题,因为前台活动也会暂停。
换句话说,如果您适当地响应 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_COMPLETED
Intent 。
除了ACTION_SHUTDOWN
,您应该添加android.intent.action.QUICKBOOT_POWEROFF
到您的意图过滤器。
ACTION_SHUTDOWN
并不总是在某些 HTC 设备(例如 Evo 4g)上播放。
具体来说,如果你选择重启,ACTION_SHUTDOWN
就是广播,如果你选择关机,QUICKBOOT_POWEROFF
就是广播。
扩展 Dave Webb 所说的是处理此问题的适当方法:
您可以覆盖 Android Activity 生命周期函数:
protected void onPause();
protected void onResume();
在大多数情况下,实现这些就足够了,并且不需要您专门处理“断电”事件。
Android 网站和此生命周期问题的答案中提供了更多信息。