gpt4 book ai didi

当我清除所有最近的应用程序时,Android 系统终止了我的服务

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:43 26 4
gpt4 key购买 nike

我已经在我的 Service 中使用了 startforeground(),但是当我清除所有最近的应用程序时,Android 一直在终止我的 Service

这是我的服务代码:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("Text")
.setTicker("Text")
.setContentText("Text")
.setSmallIcon(R.drawable.icon)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.icon))
.build();

startForeground(100, notification);

return START_STICKY;
}

我对这段代码做错了吗?

最佳答案

长期运行的服务需要以下内容以降低被终止的可能性:

  1. 返回START_STICKY来自 onStartCommand() .这样,即使由于资源限制而必须停止服务,系统也会重新启动该服务。

  2. 当服务未绑定(bind)到任何 UI 组件(例如 Activity)时,服务必须通过显示前台通知进入前台模式。前台服务不太可能被系统终止。

  3. 设置属性 "stopWithTask"=false 在相应的<service> list 文件的标签。

另请注意,由于定制,某些制造商的设备即使具有上述属性也会终止服务:

  1. 自定义任务管理器。
  2. 可禁止非系统服务的省电功能。

一些应用程序服务确实需要留在后台并且必须主动保持 Activity 状态。虽然不推荐这种方法,但可以按照以下步骤进行:

  1. 为服务启动添加触发器:例如启动完成和网络连接广播。

  2. 如果服务接收到 Intent/广播 FLAG_RECEIVER_FOREGROUND 在 Intent 中。

  3. 一个极端的手段是manually schedule a pending intent for service重新启动,使用 AlarmManager , 当 onTaskRemoved()被称为。

另见:

  1. START_STICKY does not work on Android KitKat

关于当我清除所有最近的应用程序时,Android 系统终止了我的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36324794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com