【问题标题】:Background Service Stopped When Activity Killed Or Stop or force close活动终止或停止或强制关闭时后台服务停止
【发布时间】:2014-03-17 19:34:37
【问题描述】:

我的问题是,当我按下主页按钮并关闭我的应用程序时,后台服务停止了,之后它需要在应用程序中再次登录,然后后台服务将启动,所以如果应用程序将关闭或关闭,我该怎么做就像 Whatssapp服务也可以在后台运行.....

【问题讨论】:

  • 你真的希望 smd 检查你链接的 repo 是否有你所做的所有错误吗?在此处粘贴代码以启动您的服务。

标签: android chat background-service


【解决方案1】:

我遇到了同样的问题。当您将应用程序刷出应用程序托盘时,后台服务的进程将被终止。

您可以在服务中添加以下代码或查看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);
}

这段代码的作用是,当你的activity被杀死时,它会重新启动你的应用程序的进程。

【讨论】:

  • 当我将应用程序从应用程序托盘中滑出时,“onTaskRemoved”回调被调用但服务没有启动,为什么?
【解决方案2】:

非常简单,按照下面链接中的场景操作即可。

Continue Service even if application is cleared from Recent app

您的服务和流程(在您的服务内运行的线程)将保持连续。

【讨论】:

    【解决方案3】:

    好吧,我只是猜测 - 真的不想检查您的应用程序的所有代码。

    服务可以通过2种方式:

    1. 使用 bindService() 可能是您在这里所做的。这很好,但意味着服务将在最后一个客户端解除绑定后立即被释放(您可能在某些 onPause() 方法中执行此操作。
    2. 使用 startService() 命令。在这种情况下,只要您停止服务,服务就会运行,否则系统会认为该服务正在使用大量内存,而这些内存应该用于一些更紧急的任务(例如:一些繁重的活动)

    您的问题的快速解决方案(如果我的猜测是正确的)将切换服务以在“startService”模式下运行。如果您不想过多地使用您的代码,最好放置它的位置是您的服务的 onBind() 方法(只需尝试从自身启动服务)。当然,这不会启动服务,但会将其模式切换为“长时间运行,真正的后台模式”。 这并不能解决我上面提到的所有问题 - 服务仍然可以被系统杀死以获得更多资源。您可以通过某些方式阻止它:如果您真的想保持服务运行,您应该考虑使用前台服务(google it),这将增加服务生存的机会。但最好的选择是使用服务生命周期,如果需要保存数据并在服务启动时加载它们,就像你应该对活动做的那样。对于长时间运行的后台服务,还有一个选项 start sticky 会导致服务在每次杀死、崩溃等后启动。

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多