如何在onPause()中保存对象?

时间:2012-09-19 04:15:09

标签: android multithreading

我正在构建的应用程序有两个工作线程,一个用于网络,另一个用于接收网络数据。我遇到的问题是我不确定如何在Socket中关闭它之前如何保存网络线程中的BufferedReaderPrintWriteronPause()个对象。我不需要持久化对象,我只需要一种方法来保存它们,如果Android杀死onPause()中的活动,则不会让工作线程继续运行。有没有办法将这些对象保存到onSaveInstanceState()的Bundle中,还是有另一种方式(如onRetainNonConfigurationInstance(),但不仅仅是配置更改)?此外,如果Android杀死活动,Android会自动关闭所有应用程序的线程吗?那也可以解决我的问题。谢谢。

2 个答案:

答案 0 :(得分:2)

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

ThreadsSocketsBufferedReaderPrintWriter s无法进行分区。您可以包裹文件描述符,但遗憾的是不是这些复杂的类型。这些复杂的类型具有很多状态,如果不了解每个类的实现,就很难将其包裹起来。

onPause()与杀戮不同。 onPause只是意味着您的流程不会运行前景。所以你基本上没有观点。但是你的线程仍然存在,并且除非你对它们做某事,否则它们会运行。如果您要管理自己的线程,我建议您保留对它们的引用,以便在需要它们时停止对它们调用interrupt()。 (或者如果你扩展了线程,在它的run方法中有某种退出条件,可以通过它上面的一些自定义方法触发)

如果你的应用真的被杀了,那么你的线程也被杀了。

答案 1 :(得分:0)

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