如果应用程序在后台,当用户在奥利奥解锁手机时如何接收广播

时间:2018-05-02 09:44:33

标签: android android-service android-broadcast

在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广播 是否有针对此的解决方案?

或其他热门应用如何在奥利奥设备中实现长期运行服务?

0 个答案:

没有答案