如果重启设备,请启动AlarmManager

Cil*_*nco 23 android reboot restart android-alarms

在我的应用程序中,我希望每天在特定时间运行一些代码AlarmManager.在android文档中我发现了这个:

设备处于睡眠状态时会保留已注册的警报,但如果已关闭并重新启动,则会将其清除.

这就是问题所在.即使用户重新启动手机,我也想运行代码.如果用户重新启动手机,他当前必须重新启动我的应用以再次启动闹钟.我怎么能阻止这个?我应该使用更好的机制吗?

The*_*der 35

使用以下代码创建启动接收器:

public class BootBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context pContext, Intent intent) {
        // Do your work related to alarm manager
    }
}
Run Code Online (Sandbox Code Playgroud)

在您的清单中,注册此广播接收器:

<receiver
android:name="com.yourapp.BootBroadcastReceiver"
android:enabled="true" >
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

并且不要忘记在AndroidManifest.xml中添加权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Run Code Online (Sandbox Code Playgroud)


Sri*_*opa 7

使用可以在设备启动时使用广播接收器创建服务

 <receiver android:enabled="true" android:name=".YourReceiver"
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

允许:

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Run Code Online (Sandbox Code Playgroud)