Как получить трансляцию, когда пользователь разблокирует телефон в Oreo, если приложение находится в фоновом режиме - PullRequest
0 голосов
/ 02 мая 2018

На устройствах PreOreo я использую широковещательный приемник для прослушивания разблокировки пользователя. Я использую сервис для этого.

  public class UserUnlockService extends Service {
    public UserUnlockService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        IntentFilter filter=new IntentFilter();
        filter.addAction(Intent.ACTION_USER_PRESENT);
        registerReceiver(new UserUnlockBroadcastReceiver(),filter);
        return START_STICKY;
    }
}

Это решение отлично работает на устройствах PreOreo и работает на устройстве Oreo, если мое приложение находится на переднем плане. Когда приложение находится в фоновом режиме, эта служба не будет работать. Я знаю, что в Oreo мы не можем запускать фоновые сервисы. Я пытался большинство ответов SO 1 2 3

И я попробовал эту статью , но она мне не помогла

Я также пробовал услуги переднего плана. но показывать уведомления постоянно плохо для UX моего приложения.

Таким образом, мой вопрос заключается в том, как мне получить трансляцию USER_PRESENT в Oreo, если приложение работает в фоновом режиме. Есть ли обходное решение для этого?

Или как другие популярные приложения обеспечивают долгосрочную работу служб на устройствах Oreo?

...