Android 活动终止或停止或强制关闭时后台服务停止

Android 活动终止或停止或强制关闭时后台服务停止,android,chat,background-service,Android,Chat,Background Service,我的问题是,当我按下Home(主页)按钮并关闭我的应用程序时,后台服务停止,之后它需要在应用程序中再次登录,然后后台服务将启动,那么我该如何做呢 好吧,我只是在猜测-我真的不想检查应用程序的所有代码 服务可以通过两种方式启动: 使用bindService()您可能正在这里执行的操作。这很好,但意味着服务将在最后一个客户端解除绑定后立即被释放(这可能是您在某些onPause()方法中所做的) 使用StestService()命令。在这种情况下,只要停止服务,系统就会运行,或者系统会认为该服务使用的

我的问题是,当我按下Home(主页)按钮并关闭我的应用程序时,后台服务停止,之后它需要在应用程序中再次登录,然后后台服务将启动,那么我该如何做呢

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

服务可以通过两种方式启动:

  • 使用bindService()您可能正在这里执行的操作。这很好,但意味着服务将在最后一个客户端解除绑定后立即被释放(这可能是您在某些onPause()方法中所做的)
  • 使用StestService()命令。在这种情况下,只要停止服务,系统就会运行,或者系统会认为该服务使用的内存应该用于一些更紧急的任务(EX:一些FAT活动)
  • 。 解决您的问题的快速方法(如果我的猜测是正确的)是切换服务以“startService”模式运行。如果您不想过多地使用代码,最好将其放在服务的onBind()方法上(只需尝试从自身启动服务)。当然,这不会启动服务,但会将其模式切换到“长期运行,真正的背景之一”。
    这并不能解决我上面提到的所有问题——为了获得更多的资源,服务仍然可以被系统杀死。您可以在某种程度上阻止它:如果您真的想要保持服务运行,就应该考虑使用前景服务(谷歌IT)。这将增加服务生存的机会。但最好的选择是使用服务生命周期,在需要时保存数据,并在服务启动时加载数据,就像您应该对“活动”所做的那样。对于长期运行的后台服务,还有一个选项“启动粘性”,它会导致每次终止、崩溃等后服务启动。

    好的,我很抱歉st猜测-真的不想检查应用程序的所有代码

    服务可以通过两种方式启动:

  • 使用bindService()可能是您在这里所做的。这很好,但意味着一旦最后一个客户端解除绑定,服务就会被释放(您可能在某些onPause()方法中所做的)
  • 使用StestService()命令。在这种情况下,只要停止服务,系统就会运行,或者系统会认为该服务使用的内存应该用于一些更紧急的任务(EX:一些FAT活动)
  • 。 解决您的问题的快速方法(如果我的猜测是正确的)将是切换服务以“startService”模式运行。如果您不想过多地使用代码,最好将其放在服务的onBind()方法上(只需尝试从自身启动服务)。当然,这不会启动服务,但会将其模式切换到“长期运行,真正的背景之一”。
    这并不能解决我上面提到的所有问题——为了获得更多的资源,服务仍然可以被系统杀死。您可以在某种程度上阻止它:如果您真的想要保持服务运行,就应该考虑使用前景服务(谷歌IT)。这将增加服务生存的机会。但最好的选择是使用服务生命周期,在需要时保存数据,并在服务启动时加载数据,就像您应该对活动所做的那样。对于长时间运行的后台服务,还有一个选项start Stick,它会导致服务在每次终止、崩溃等之后启动。

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

    您可以在服务中添加以下代码或查看问题


    此代码的作用是,当您的活动被终止时,一旦应用程序被终止,它将重新启动应用程序的进程。

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

    您可以在服务中添加以下代码或查看问题


    这段代码的作用是,当您的活动被终止时,一旦应用程序被终止,它就会重新启动应用程序的进程。

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


    您的服务和进程(服务中运行的线程)将保持连续。

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


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

    您真的希望smd检查您链接的回购是否存在所有错误?请粘贴此处代码以启动您的服务。您真的希望smd检查您链接的回购是否存在所有错误?请粘贴此处代码以启动您的服务。当我将应用程序从应用程序托盘中滑出“ONTASKREMOVE”时“回拨被呼叫但服务未启动为什么?当我将应用程序从应用程序托盘中滑出”onTaskRemoved“回拨被呼叫但服务未启动为什么?
    @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);
    }