Проблема в SM-G950F (Samsung s8) для запуска OneoffTask - PullRequest
0 голосов
/ 06 октября 2018

Я столкнулся с проблемой, когда пользователи моего приложения не могут пройти точку.

Когда пользователь пытается войти в систему, он входит в систему, но после этого я нажал API с «OneoffTask», используя этот код:

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

Этот код выполняется, но по расписаниюзадание не выполняетсяSamsung S8 модель: SM-G950F.Работает на всех других устройствах.Почему это проблема, я тоже не получаю ошибку.Он просто застрял там.

1 Ответ

0 голосов
/ 04 ноября 2018

Я не могу комментировать, поэтому я сделал некоторые предположения относительно проблемы, с которой вы столкнулись, и, надеюсь, имею это право.Пожалуйста, дайте мне знать, если это не так.

Samsung 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), так что, надеюсь, вам не нужно так много«Орео-логика».

Пожалуйста, дайте мне знать, если это привело вас в правильном направлении:)

...