SM-G950F(Samsung s8)中的问题,用于运行OneoffTask

时间:2018-10-06 08:41:28

标签: android scheduled-tasks samsung-mobile

我遇到了一个问题,我的应用程序用户无法逾越。

当用户尝试登录时,它会登录,但是此后,我使用以下代码通过“ 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。它正在所有其他设备上运行。为什么会出现此问题,但我也没有收到错误消息。它只是卡在那里。

1 个答案:

答案 0 :(得分:1)

我无法发表评论,因此我对您面临的问题做出了一些假设,并希望拥有这项权利。如果不是这种情况,请告诉我。

三星S8可能已升级到Android 8.0(Oreo),对吧?

在奥利奥(Oreo)中,您需要以其他方式处理限制。

Android 8.0限制了用户不直接与应用程序交互时应用程序可以执行的操作。应用通过“后台服务限制”和“广播限制”两种方式受到限制,请参考:https://developer.android.com/about/versions/oreo/background#overview

GcmNetworkManager还要求用户安装了“播放服务”,因此必须确保对此进行检查。 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”。

请让我知道您是否朝正确的方向前进:)