java - 当屏幕方向改变时android线程崩溃

标签 java android multithreading

我正在制作一个 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/

相关文章:

java - 如何在一个ListView中显示一个String数组和一个Integer数组

java - 当另一个线程终止时终止 Thread.Sleep() ?

Java,LibGDX - 高斯模糊颜色分离器问题 - 接收负值

java - 将 JavaScriptObject 转换为 gwt 小部件

android - 在具有更高采样率的 Android 中,Echo 没有通过 speex aec 取消吗?

java - 取消 future 与停止线程

c++ - 这个接口(interface)是线程安全的吗?

java - 使用新的 java.time API 解析时区非常慢

java - 为非实体请求实现GWT RequestFactory服务

android - 如何在 Android 中将 ImageView 转换为位图图像