从服务内部检测系统重启

时间:2018-07-11 22:25:23

标签: android android-service

是否可以检测服务何时被其自身的一种方法停止或破坏?例如 onDestroy()(当前不起作用)

我需要的是在设备重新启动或关闭时从服务内部进行检测。

1 个答案:

答案 0 :(得分:1)

您可以创建一个BroadcastReceiver来监听ACTION_SHUTDOWNQUICKBOOT_POWEROFF的意图:

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

相反,您可以在手机重新开机时收听BOOT_COMPLETED的意图:

<receiver android:name=".PowerOnReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

请记住,后者要求设备首先由用户解锁。在较新的API中,您可以侦听LOCKED_BOOT_COMPLETED,这将允许您启动服务或在设备解锁之前执行所需的任何操作。