应用程序从应用程序托盘中删除后,服务的进程被杀死

2023-12-09

当活动启动时,我正在启动服务(或重新启动正在运行的服务),使用:

Intent intent = new Intent(this, MyService.class); startService(intent);

稍后,基于某些操作,相同的活动使用以下方式绑定到服务

bindService(new Intent(this, MyService.class), mConnection, Context.BIND_AUTO_CREATE);

当活动被破坏时,我打电话

unbindService(mConnection);

早些时候,当我从应用程序托盘中杀死相同的活动/应用程序并在正在运行的应用程序下显示“消息 1 进程 1 服务正在运行”时,该服务会重新启动。

现在,该服务不会在终止相同的活动/应用程序时重新启动。

我收到消息“0个进程1个服务正在运行”,这意味着该服务实际上没有运行。

该服务不会在应用程序关闭时重新启动。我的申请由一项活动组成。此外,系统启动后启动该服务时也会成功启动。

为什么当我使用 startService() 启动服务时,服务进程会被终止?

edit

在我从应用程序托盘关闭应用程序后,该服务通常会重新启动。但现在突然使用相同的代码,却没有。当我关闭其他应用程序时,也会发生这种情况。例如。

enter image description here


这是我遇到的一种解决方法,如果服务进程在关闭应用程序时被终止,它可以很好地重新启动服务。在您的服务中,添加以下代码。

我遇到了这个解决方法this线。

@Override
public void onTaskRemoved(Intent rootIntent){
    Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass());
    restartServiceIntent.setPackage(getPackageName());

    PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT);
    AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    alarmService.set(
    AlarmManager.ELAPSED_REALTIME,
    SystemClock.elapsedRealtime() + 1000,
    restartServicePendingIntent);

    super.onTaskRemoved(rootIntent);
 }

似乎是应用程序进程被杀死的错误。如果某个服务的进程被终止,那么它的运行就没有任何意义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用程序从应用程序托盘中删除后,服务的进程被杀死 的相关文章

随机推荐