SDK> = 26中的Android服务出现问题

我正在创建一个应用程序,即使该应用程序在进程中或在后台被杀死,该应用程序也会向用户发送通知。实际上,在SDK> = 26的Android版本中,我正在使用前台服务。 为了显示通知,我有一个服务(Datasnotification),该服务启动用于发出http请求的asyncTask(HttpRequest),条件结束时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中有运行后台服务的解决方案吗?

dwrdwr245 回答:SDK> = 26中的Android服务出现问题

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

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

  
      
  1. 解锁运行Android Oreo的设备
  2.   
  3. 向下滑动   通知栏,充分暴露“使用电池”通知
  4.   
  5. 长按通知,直到它更改并显示一个切换
  6.   
  7. 点击切换按钮,确保其为灰色
  8.   
  9. 选择完成   禁用“使用电池”通知
  10.   

source

本文链接:https://www.f2er.com/3157933.html

大家都在问