3

我正在构建的应用程序有两个工作线程,一个用于网络,一个仅用于接收网络数据。我遇到的问题是,在关闭网络线程之前,我不确定如何从网络线程中保存SocketBufferedReader和对象。我不需要对象持久保存,我只需要一种方法来保存它们,如果 Android 杀死. 有没有办法将这些对象保存到 Bundle 中,或者是否有另一种方法(例如,但不仅仅是用于配置更改)?此外,如果 Android 终止 Activity,它会自动关闭应用程序的所有线程吗?那也可以解决我的问题。谢谢你。PrintWriteronPause()onPause()onSaveInstanceState()onRetainNonConfigurationInstance()

4

2 回答 2

2

你有几个问题。我会尝试回答几个。

Threads, Sockets, BufferedReaders 和PrintWriters 不能被包裹。您可以打包文件描述符,但遗憾的是不能打包这些复杂类型。这些复杂类型有很多状态,如果不知道每个状态的实现,很难将它们打包成一个包。

onPause()不等于杀。onPause仅仅意味着您的进程不会在前台运行。所以你基本上不会有任何看法。但是,除非您对它们执行某些操作,否则您的线程仍将存在并运行。如果您要管理自己的线程,我建议您保留对它们的引用,以便interrupt()在需要它们停止时调用它们。(或者如果你扩展了线程,在它的运行方法中有某种退出条件,可以由它上面的一些自定义方法触发)

如果您的应用程序真的被杀死了,那么是的,您的线程也被杀死了。

于 2012-09-19T05:21:13.437 回答
0

您可以在代码上覆盖 onPause() 方法,并在触发 onPause() 事件时将数据保存在共享首选项中。

于 2012-09-19T09:06:04.323 回答