我正在构建的应用程序有两个工作线程,一个用于网络,另一个用于接收网络数据。我遇到的问题是我不确定如何在Socket
中关闭它之前如何保存网络线程中的BufferedReader
,PrintWriter
和onPause()
个对象。我不需要持久化对象,我只需要一种方法来保存它们,如果Android杀死onPause()
中的活动,则不会让工作线程继续运行。有没有办法将这些对象保存到onSaveInstanceState()
的Bundle中,还是有另一种方式(如onRetainNonConfigurationInstance()
,但不仅仅是配置更改)?此外,如果Android杀死活动,Android会自动关闭所有应用程序的线程吗?那也可以解决我的问题。谢谢。
答案 0 :(得分:2)
你有几个问题。我会尝试回答一些问题。
Threads
,Sockets
,BufferedReader
和PrintWriter
s无法进行分区。您可以包裹文件描述符,但遗憾的是不是这些复杂的类型。这些复杂的类型具有很多状态,如果不了解每个类的实现,就很难将其包裹起来。
onPause()
与杀戮不同。 onPause
只是意味着您的流程不会运行前景。所以你基本上没有观点。但是你的线程仍然存在,并且除非你对它们做某事,否则它们会运行。如果您要管理自己的线程,我建议您保留对它们的引用,以便在需要它们时停止对它们调用interrupt()
。 (或者如果你扩展了线程,在它的run方法中有某种退出条件,可以通过它上面的一些自定义方法触发)
如果你的应用真的被杀了,那么你的线程也被杀了。
答案 1 :(得分:0)
您可以覆盖代码上的onPause()方法,并在触发onPause()事件时将数据保存在共享首选项中。