我正在制作一个 Android 应用程序,它需要从网址下载文本并将其显示在警报对话框上。
我创建了一个新线程。线程读取网络上的文件,在线程启动之前会出现一个进度对话框,线程将来自网络的文件内容打包到bundle上,并将其传递给处理程序,处理程序停止进度,并显示bundle上的文本一个警报对话框。嗯,这工作得很好,但是当显示进度对话框并且线程正在运行时屏幕方向发生变化时,应用程序就会崩溃。关于如何解决这个问题有什么想法吗?
任何帮助将不胜感激。 :)
最佳答案
当方向改变时,通常操作系统会完全关闭您的 Activity 并重新启动它。这会弄乱你的下载线程。一种可能有效的解决方案是将 Thread 对象保存为非配置数据。您需要在 Activity 中重写 onRetainNonConfigurationInstance()
。 但是:如果您的 Thread 对象具有对任何 View 或 Activity 相关对象的引用,请不要执行此操作。这将导致巨大的内存泄漏,并且很快就会让您的用户非常不高兴。
请参阅指南主题 Handling Runtime Changes有关使用 onRetainNonConfigurationInstance()
的详细信息以及替代方法。参见文章Avoiding Memory Leaks就……好吧,仅此而已。
关于java - 当屏幕方向改变时android线程崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5240925/