定位 API 26 级(奥利奥)更新时,GPS 应用无法在启动后启动

GPS app failing to start after boot when targetting API Level 26 (Oreo) update

我在 google 商店上安装了定位 API 版本 25 的 gps 应用程序。我进行了一些功能更新并将 target/compile 版本更新为 26,因为 Google 要求这些天。但是我的后台服务在启动后尝试启动时失败了。 Android studio 在我调试时没有给出任何错误。当我将目标版本改回 25 时,我的应用程序在启动后正常启动。

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
PowerManager p = (PowerManager) getSystemService(this.POWER_SERVICE);
wakeLock=p.newWakeLockPowerManager.PARTIAL_WAKE_LOCK, "tag:DoNotSleep");    
}

Android Studio 对 NullPointerException 或下一行的标记发出警告。但它不会阻止我构建代码。看来我必须在以下行中更改一些内容。

wakeLock=p.newWakeLockPowerManager.PARTIAL_WAKE_LOCK, "tag:DoNotSleep");

https://developer.android.com/about/versions/oreo/android-8.0-changes

作为 Android 8.0(API 级别 26)为延长电池寿命而引入的更改之一,当您的应用进入缓存状态且没有活动组件时,系统会释放任何唤醒锁该应用程序持有。

因此,如果您依赖唤醒锁来保持您的服务处于活动状态,它不会。