android – 从应用程序托盘中删除应用程序后,该服务的进程将被终止

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

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

稍后,基于某些操作,同一活动将绑定到服务使用

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

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

unbindService(mConnection);

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

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

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

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

为什么使用startService()启动服务时,服务进程会被杀死?

编辑

在从应用程序托盘中关闭应用程序后,该服务用于重新启动。但是现在突然间用同样的代码,不行。当我关闭它也发生在其他应用程序。例如。

以下是我遇到的解决方法,如果在关闭应用程序时遇到其进程死机,则重新启动服务非常有用。在您的服务中,添加以下代码。

我在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);
 }

似乎是应用程序的进程被杀死的错误。如果一个服务的进程被杀死,则无需运行该服务。

翻译自:https://stackoverflow.com/questions/20592366/the-process-of-the-service-is-killed-after-the-application-is-removed-from-the-a

转载注明原文:android – 从应用程序托盘中删除应用程序后,该服务的进程将被终止