我需要一个需要互联网连接的定期任务,并在重新启动后仍然存在。我已经取得了那么多,但问题是我希望应用程序继续工作,即使是我退出它。
如同,如果我存在应用程序并关闭wifi然后再将其关闭(如果时间段已启动)则应该触发任务并在后台工作。
这是startPeriodicTask方法
public void startPeriodicTask() {
Log.d(TAG, "startPeriodicTask");
// [START start_periodic_task]
PeriodicTask task = new PeriodicTask.Builder()
.setService(MyTaskService.class)
.setTag(TASK_TAG_PERIODIC)
.setPeriod(30L)
.setPersisted(true) // to persist after reboot
.setRequiredNetwork(Task.NETWORK_STATE_ANY )
.build();
mGcmNetworkManager.schedule(task);
// [END start_periodic_task]
}
我在检查playServices后立即在OnCreate中调用此方法
checkPlayServicesAvailable();
startPeriodicTask();
我已将此添加到了清单中,以便在重启后作业继续存在
<uses-permission android:name="android.Manifest.permission.RECEIVE_BOOT_COMPLETED" />
答案 0 :(得分:0)
在wifi重新启动后重新启动任务的唯一方法是从Receiver中调用它。因此,您需要创建一个在网络状态发生变化时被调用的接收器。然后在里面你可以检查它是否打开或关闭。如果它已开启,请调用您的方法。
您可以在本文档页面底部的示例中看到具体操作方法:https://developer.android.com/training/basics/network-ops/managing.html