На устройствах 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?