Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 重新启动的活动无法在重新启动前获取其已启动的服务的状态_Android - Fatal编程技术网

Android 重新启动的活动无法在重新启动前获取其已启动的服务的状态

Android 重新启动的活动无法在重新启动前获取其已启动的服务的状态,android,Android,这是一种情况,, 我有一个android活动,它启动一个服务(该服务用于发送/接收文件等)。服务sendMessage()通过在Activity类对象中创建的处理程序发送到Activity。 然后,“活动”将显示服务在其包含的视图上执行的当前操作的状态 问题就在这里 活动开始 在全局对象中创建的活动处理程序 活动启动服务- 用户通过活动命令服务开始发送/接收文件的过程 服务现在很忙,并且还通过通过全局对象获得的处理程序向UI发送消息 活动接收并处理消息()并在UI上发布状态 用户现在将我的活动发

这是一种情况,, 我有一个android活动,它启动一个服务(该服务用于发送/接收文件等)。服务sendMessage()通过在Activity类对象中创建的处理程序发送到Activity。 然后,“活动”将显示服务在其包含的视图上执行的当前操作的状态

问题就在这里

  • 活动开始
  • 在全局对象中创建的活动处理程序
  • 活动启动服务-
  • 用户通过活动命令服务开始发送/接收文件的过程
  • 服务现在很忙,并且还通过通过全局对象获得的处理程序向UI发送消息
  • 活动接收并处理消息()并在UI上发布状态
  • 用户现在将我的活动发送到后台(可能是他开始使用另一个应用程序)
  • 在此过程中,android可能会终止我的活动,但服务正忙/正在运行
  • 服务同时结束
  • 一段时间后,用户打开活动
  • (问题)在创建时启动的活动称为活动。该活动不知道服务的最后状态。无论是成功完成,还是失败或任何其他状态最后状态

  • 这取决于您启动服务的方式,以及应该如何继续

    假设最简单的情况是,服务在同一进程中以模式
    START\u STICKY
    运行,则该服务将保留在内存中,直到您从activity调用
    stopService()

    在这种情况下,您可以创建一个类级静态变量来存储服务当前状态(即未启动、正在运行、错误、已完成等),并从您的活动中对其进行测试


    关于。

    共享引用、SQLite、文本文件或应用程序实例的静态变量或变量/字段(在代码的任何位置将应用程序的单例实现为getInstance)。一旦被android杀死,静态变量和应用程序实例将丢失内存中的状态。

    您能说清楚一点吗?您的意思是,如果活动被终止,静态变量仍然存在吗?重新启动时,我可以从中获得价值?活动是应用程序的一部分(某种程度上)。所以,当进程处于活动状态时,静态变量是可用的。当进程处于活动状态时,应用程序也仍然处于活动状态,所以您可以重新定义应用程序的类名以拥有自己的
    类???扩展应用程序
    以使用singleton.fine访问静态或字段,那么在服务类中创建一个静态变量来存储上次状态如何,这不一样吗?嗯,您也可以这样做,所有静态变量都可用。但如果用户真的离开了您的应用程序,Android可以决定终止该进程,所以您甚至可能丢失静态变量。这实际上取决于应用程序的逻辑。如果服务的结果只对应用程序生命周期有意义,而不是静态的,则使用文件或共享引用或其他存储。是的,我明白了,如果整个应用程序都消失了,那么在我的情况下就不重要了,所以我只会在服务中创建一个静态变量来存储最后的状态。我不确定应用程序类如何工作,我将看一看。谢谢,服务类中的静态变量?是的,工作正常。我用它来控制我的应用程序中的服务状态。