Android 每天在应用程序不运行时运行代码';t打开
我想每天(每24小时)运行一些代码。问题是,若用户并没有打开应用程序。应用程序未打开时如何运行代码 实现计划操作的全新方式是使用,可从sdk级别21获得 google play服务最近增加了一种执行定期任务的更简单(且后端口)的方法(并非如此)。尽管名称不同,但安排与网络无关的任务很有用 检查 无论网络和设备充电状态如何,都安排定期任务Android 每天在应用程序不运行时运行代码';t打开,android,Android,我想每天(每24小时)运行一些代码。问题是,若用户并没有打开应用程序。应用程序未打开时如何运行代码 实现计划操作的全新方式是使用,可从sdk级别21获得 google play服务最近增加了一种执行定期任务的更简单(且后端口)的方法(并非如此)。尽管名称不同,但安排与网络无关的任务很有用 检查 无论网络和设备充电状态如何,都安排定期任务 部分。在android中,要运行后台定期任务,您可以使用多种方法,其中一些方法是: 作业调度器(仅适用于API 21或更高版本) Android在API21上添
部分。在android中,要运行后台定期任务,您可以使用多种方法,其中一些方法是:
AlarmManager
计划定期任务。一篇完整的文章来实现它
compile 'com.google.android.gms:play-services-gcm:7.5.0'
创建扩展到gcmtasksservice
public class BackgroundTaskHandler extends GcmTaskService {
public BackgroundTaskHandler() {
}
@Override
public int onRunTask(TaskParams taskParams) {
//Your periodic code here
}
}
在manifest.xml中声明服务
<service
android:name=".BackgroundTaskHandler"
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>
我不认为JobScheduler在API11或更高版本上工作。根据文档,它是在API 21上添加的。值得一提的是,现在有了WorkManager,当它稳定时,推荐使用它。
String tag = "periodic";
GcmNetworkManager mScheduler = GcmNetworkManager.getInstance(getApplicationContext());
long periodSecs = 60L;// 1 minute
PeriodicTask periodic = new PeriodicTask.Builder()
.setService(BackgroundTaskHandler.class)
.setPeriod(periodSecs)
.setTag(tag)
.setPersisted(true)
.setUpdateCurrent(true).setRequiredNetwork(com.google.android.gms.gcm.Task.NETWORK_STATE_CONNECTED)
.build();
mScheduler.schedule(periodic);