运行 OneoffTask 在 SM-G950F(Samsung s8) 中的问题

Issue in SM-G950F(Samsung s8) for running OneoffTask

我遇到了一个问题,我的应用程序用户无法通过某个点。

当用户尝试登录时,它会登录,但之后我使用此代码用 "OneoffTask" 命中 API :

OneoffTask task = new OneoffTask.Builder()
        .setService(SyncService.class)
        .setTag(TaskConstants.UPLOAD_STREAK)
        .setExecutionWindow(0L, 200)
        .setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
        .setPersisted(true)
        .setUpdateCurrent(true)
        .build();

GcmNetworkManager mGcmNetworkManager = GcmNetworkManager.getInstance(MainApplication.getContext());
mGcmNetworkManager.schedule(task);

这段代码执行了,但是定时任务没有执行。三星 s8 型号:SM-G950F。它适用于所有其他设备。为什么是这个问题,我也没有收到错误。它只是卡在那里。

我无法发表评论,所以我对您所面临的问题做出了一些假设,希望您是对的。如果不是这样,请告诉我。

三星S8应该升级到Android8.0(Oreo)了吧?

在 Oreo 中,您需要以不同的方式处理一些限制。

Android 8.0 限制了应用程序在用户不直接与应用程序交互时可以执行的操作。应用受到"Background Service Limitations"和"Broadcast Limitations"两种限制,参考:https://developer.android.com/about/versions/oreo/background#overview

GcmNetworkManager 还要求用户安装 "play services",您必须确保进行检查。 GCM 也很快被弃用,因此寻找其他解决方案,例如由 FCM 取代:https://developers.google.com/cloud-messaging/android/client(另请参阅确保 S8 满足它们的要求)。

为确保 GcmNetworkManager 调度程序按预期工作,您需要将其与 JobScheduler 结合使用。我找到的最佳参考是:https://github.com/yigit/android-priority-jobqueue/wiki/Integration-with-JobScheduler-and-GcmNetworkManager

我对 JobScheduler 的体验是,它在我测试过的所有较新设备上运行良好 (Android 6.0 --> 8.0),所以希望你不需要那么多 "Oreo-logic"。

如果你的方向正确,请告诉我:)