Android 每天在应用程序不运行时运行代码';t打开

Android 每天在应用程序不运行时运行代码';t打开,android,Android,我想每天(每24小时)运行一些代码。问题是,若用户并没有打开应用程序。应用程序未打开时如何运行代码 实现计划操作的全新方式是使用,可从sdk级别21获得 google play服务最近增加了一种执行定期任务的更简单(且后端口)的方法(并非如此)。尽管名称不同,但安排与网络无关的任务很有用 检查 无论网络和设备充电状态如何,都安排定期任务 部分。在android中,要运行后台定期任务,您可以使用多种方法,其中一些方法是: 作业调度器(仅适用于API 21或更高版本) Android在API21上添

我想每天(每24小时)运行一些代码。问题是,若用户并没有打开应用程序。应用程序未打开时如何运行代码

实现计划操作的全新方式是使用,可从sdk级别21获得

google play服务最近增加了一种执行定期任务的更简单(且后端口)的方法(并非如此)。尽管名称不同,但安排与网络无关的任务很有用

检查

无论网络和设备充电状态如何,都安排定期任务


部分。

在android中,要运行后台定期任务,您可以使用多种方法,其中一些方法是:

  • 作业调度器(仅适用于API 21或更高版本)
  • Android在API21上添加了这个类,这里是文档

  • JobSchedulerCompat-API 11或更高版本的JobScheduler库的后端口
  • 你们可以找到关于图书馆的一切

  • 使用报警管理器处理定期任务
  • 您还可以使用
    AlarmManager
    计划定期任务。一篇完整的文章来实现它

  • 使用GCM(谷歌云消息)网络管理器安排定期任务。
  • 你可以看看这个文档来实现它

    使用GCM网络管理器执行定期任务的示例

    在项目级build.gradle中添加依赖项

    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);