gpt4 book ai didi

java - 如何防止重新启动正在运行的服务 - Android

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:09 25 4
gpt4 key购买 nike

我想做长时间的后台工作我还希望能够在用户进入 Activity 时随时在 ui 中显示统计进度,并带有更新通知。

我以 START_STICKY 模式启动服务,然后将其绑定(bind)到我的 Activity 并使用服务的公共(public)方法运行该过程。

一切正常,直到我从最近的应用程序中关闭我的应用程序。

它会破坏并重新启动我正在运行的服务。

这就是问题所在。 “我不希望我正在运行的服务重新启动”

我希望我的服务在不终止且不重新启动的情况下继续运行。

我怎样才能做我想做的事?

为什么 os 重新启动正在运行的服务:/你

我试过 START_NOT_STICKY 但它也关闭了服务。

最佳答案

在 Android 6+ 上,当用户从最近的应用程序中删除应用程序时,前台服务不会停止。您可以通过将此代码添加到 onCreate() 来使您的服务成为前台服务:

final Intent launcherIntent = new Intent();
final PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, launcherIntent, 0);
final Notification.Builder builder = new Notification.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Test Notification")
.setWhen(System.currentTimeMillis())
.setContentIntent(pendingIntent);
final Notification notification;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
notification = builder.build();
}
else {
//noinspection deprecation
notification = builder.getNotification();
}
this.startForeground(NOTIFICATION_ID, notification);

在 Android 6 之前,当用户从最近的任务中删除任务时,服务总是被终止。除了在 onTaskRemoved() 中彻底关闭外,您无能为力。

关于java - 如何防止重新启动正在运行的服务 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46102673/

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