您的警報將不會被保留。重新啓動後,所有註冊的警報都將被刪除。
2的解決方案將是有益的:
1.註冊一個BOOT_COMPLETED廣播接收器:
AndroidManifest.xml中
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name=".notification.alarm.OnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
而在你OnBootReceiver只需在AlarmManager再次註冊您的報警。
2.使用的jobscheduler-API(> = API 21)或GcmNetworkManager(PlayServices)
根據您的使用情況下,它也有可能使用新GcmNetworkMaanger,它允許重新啓動期間堅持作業。
添加服務到您的清單:
<service
android:name=".LoadWeatherService"
android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE">
<intent-filter>
<action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
</intent-filter>
</service>
在服務聲明要做的事情:
public class LoadWeatherService extends GcmTaskService {
public void onInitializeTasks() {
super.onInitializeTasks();
// Reregister your Job after update of Google Play Services
}
@Override
public int onRunTask(TaskParams taskParams) {
// Do your stuff
return GcmNetworkManager.RESULT_SUCCESS;
}
}
訂閱你的工作
String tag = "myperiodicTask";
PeriodicTask periodicTask = new PeriodicTask.Builder().setService(LoadWeatherService.class)
.setRequiredNetwork(Task.NETWORK_STATE_CONNECTED).setPeriod(60L).setFlex(10L)
.setTag(tag).setPersisted(true).build();
GcmNetworkManager.getInstance(this).schedule(periodicTask);
請注意:這只是來自我的應用程序的樣本,您必須根據您的需求進行調整。
更多信息有關GcmNetworkManager:https://developers.google.com/cloud-messaging/network-manager
製作啓動完成reciever和電話的啓動 –