我需要知道用户何时关闭他/她的手机。是否有任何广播(或类似的)在用户手机关机时通知?
答案 0 :(得分:65)
您可以使用手机即将关机时播放的ACTION_SHUTDOWN
Intent。文档说:
应用程序通常不需要处理此问题,因为前台活动也会暂停。
换句话说,如果您适当地响应了Activity的所有生命周期事件,除非您真的想要执行与关闭相关的特定操作,否则无需使用它。
{1}}意图在API级别4中引入,换句话说它只会在运行Android 1.6或更高版本的手机上发送。
您将使用BroadcastReceiver
捕获广播。它看起来像这样:
ACTION_SHUTDOWN
您还需要在Manifest中输入以下内容:
public class ShutdownReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Insert code here
}
}
根据您正在做的事情,另一种选择是使用重新启动手机时发送的ACTION_BOOT_COMPLETED
Intent。
答案 1 :(得分:20)
除ACTION_SHUTDOWN
外,您还应将android.intent.action.QUICKBOOT_POWEROFF
添加到您的意图过滤器中
ACTION_SHUTDOWN
并不总是在某些HTC设备上广播(例如Evo 4g)
更具体地说,如果选择重新启动,则广播ACTION_SHUTDOWN
,但如果选择关闭电源,则会广播QUICKBOOT_POWEROFF
。
答案 2 :(得分:0)
扩展Dave Webb所说的是处理这个问题的合适方法:
您可以覆盖Android活动生命周期功能:
protected void onPause();
protected void onResume();
在大多数情况下,实施这些应该已经足够,并且不需要您专门处理“断电”事件。
有关Android Website和this lifecycle question答案的更多信息。