即使退出应用程序,GcmNetworkManager也会定期执行任务吗?

时间:2017-02-26 17:28:45

标签: android job-scheduling periodic-task gcm-network-manager gcmtaskservice

我需要一个需要互联网连接的定期任务,并在重新启动后仍然存在。我已经取得了那么多,但问题是我希望应用程序继续工作,即使是我退出它。

如同,如果我存在应用程序并关闭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" />

1 个答案:

答案 0 :(得分:0)

在wifi重新启动后重新启动任务的唯一方法是从Receiver中调用它。因此,您需要创建一个在网络状态发生变化时被调用的接收器。然后在里面你可以检查它是否打开或关闭。如果它已开启,请调用您的方法。

您可以在本文档页面底部的示例中看到具体操作方法:https://developer.android.com/training/basics/network-ops/managing.html