Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 管理IP客户端应用程序的生命周期_Android_Network Programming_Lifecycle - Fatal编程技术网

Android 管理IP客户端应用程序的生命周期

Android 管理IP客户端应用程序的生命周期,android,network-programming,lifecycle,Android,Network Programming,Lifecycle,我有一个IP客户端应用程序,它具有以下对象: Socket实例已连接到IP服务器 Thread实例,执行ThreadFunction。连接插座时,此功能持续读取插座 现在我正试图理解,当活动重新创建时(例如,在更改屏幕方向后),我应该做什么。Socket实例是否丢失?ThreadFunction会发生什么情况?查看另一方的行为(IP服务器),我看到客户端Android应用程序没有断开连接。那么,在这种情况下,我的策略应该是什么:我应该再次创建这些资源,还是尝试通过某种方式恢复它们?我建议使用。它

我有一个IP客户端应用程序,它具有以下对象:

  • Socket
    实例已连接到IP服务器

  • Thread
    实例,执行
    ThreadFunction
    。连接插座时,此功能持续读取插座


  • 现在我正试图理解,当活动重新创建时(例如,在更改屏幕方向后),我应该做什么。
    Socket
    实例是否丢失?
    ThreadFunction
    会发生什么情况?查看另一方的行为(IP服务器),我看到客户端Android应用程序没有断开连接。那么,在这种情况下,我的策略应该是什么:我应该再次创建这些资源,还是尝试通过某种方式恢复它们?

    我建议使用。它的设计目的是满足您的要求。

    对于您提出的与应用程序被破坏时资源会发生什么相关的问题,答案是所有东西都会消失,包括套接字和Runnable

    即使在服务器端,一旦服务器尝试通过套接字进行通信,套接字也将消失

    如前所述,您最好的解决方案是使用服务进行管理。这与使用活动非常相似,我鼓励大家看几个例子


    如果您确实希望在不使用服务的情况下使您现在拥有的内容保持一致,您可以禁用屏幕旋转,将
    android:configChanges=“orientation”
    添加到
    AndroidManifest.xml

    为什么不在服务中运行所有这些?那么你就没有活动破坏的问题了。@AedonEtLIRA-因为我还没有学习服务:)我稍后会尝试实现这个建议,现在,我想在这个应用程序中获得一致的行为。谢谢。是的服务正是您在这种情况下所需要的。他们被设计来处理任何长期的背景行动。Socket IO绝对是后台操作。谢谢。我考虑在onSaveInstanceState中断开连接,并将当前状态(如IP地址和端口)保存在捆绑包中。当重新创建活动时,我希望使用捆绑信息再次连接。可以吗?当然,我知道服务是真正的解决方案,但我还是想完成这个项目。应该可以。请记住,如果要保留客户端身份,您必须让应用程序处理双方(服务器和客户端)的重新连接,因为通信将移动到一对新的套接字。谢谢。服务器在嵌入式设备(非移动设备)上运行,因此在Android中,我只需要编写一个客户端代码。@Alex Farber我应该提到,对于设备方向更改的特定情况,您可以使用
    onRetainonConfiguration Instance()
    返回一个对象,该对象将在重新创建时传递给新活动。您可以使用它将套接字(或管理套接字的线程)传递给新活动,而无需重新连接。