2

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

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

1 回答 1

0

在 wifi 重新打开后重新开始任务的唯一方法是从 Receiver 调用它。所以你需要创建一个接收器,当网络状态改变时被调用。然后在里面你可以检查它是打开还是关闭。如果它打开,那么调用你的方法。

您可以在本文档页面底部的示例中准确了解如何执行此操作:https ://developer.android.com/training/basics/network-ops/managing.html

于 2017-02-26T18:52:44.183 回答