【问题标题】:Issue with Android Service in SDK >= 26SDK 中的 Android 服务问题 >= 26
【发布时间】:2019-11-05 16:33:37
【问题描述】:

我正在创建一个应用程序,即使应用程序从进程中或在后台被终止,它也会向用户发送通知。实际上,在 SDK >= 26 的 Android 版本中,我使用的是前台服务。 为了显示通知,我有一个服务 (DatasNotification),它启动一个 asyncTask (HttpRequest) 以发出 http 请求,并且在条件结束时的 asynctask 启动一个显示通知的新服务。 当我的应用程序进入后台时,我有一个系统通知说:我的应用程序正在耗尽电池。 在我的分析过程中,我了解到这个系统通知是由 DatasNotification 服务生成的。

这是我的 DatasNotification 代码:

@Override
public void onCreate() {
    super.onCreate();
    Fabric.with(this, new Crashlytics());
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        startForeground(1, new Notification());
    }
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    new HttpRequest(getApplicationContext(), 0).execute();
    return START_STICKY;
}

sdk >= 26 运行后台服务有什么解决办法吗?

【问题讨论】:

    标签: android service notifications


    【解决方案1】:

    这是 Oreo (API26-27) 的特定功能,用于在应用运行后台服务时显示“[应用] 正在使用电池”的系统通知。您会注意到您不会收到相同的通知运行 P (API28) 或 Android 10 (API 29) 的设备中的警告,因为该警告已完全删除/禁用。我认为您无法在应用中更改任何内容以防止该警告显示在 Oreo 设备中,除非您可以完全摆脱您的(后台)服务。

    用户可以通过执行以下操作来禁止显示该警告:

    1. 解锁运行 Android Oreo 的设备
    2. 向下滑动 通知栏,完全暴露“使用电池”通知
    3. 长按通知直到它改变并显示一个切换
    4. 点击切换开关,确保它显示为灰色
    5. 选择完成以 禁用“使用电池”通知

    (source)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多