在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设备上运行。当应用程序处于后台时,此服务无法正常运行。我知道在奥利奥我们不能运行后台服务。我尝试了大多数SO答案1 2 3
我试过这个article,但它并没有帮助我
我也尝试过前台服务。但是一直显示通知对我的应用程序的用户体验不利。
所以我的问题是,如果应用程序在后台,我如何在Oreo中接收USER_PRESENT广播 是否有针对此的解决方案?
或其他热门应用如何在奥利奥设备中实现长期运行服务?