【发布时间】:2012-07-20 19:51:47
【问题描述】:
我的教育应用程序有一个包含 6 到 7 个选项卡的选项卡主机,支持横向和纵向模式。在与选项卡关联的每个活动中,我在列表视图中显示一些学生记录,一些复选框用于选择和一些评分栏、按钮等。我通过 Web 服务调用从远程服务器获取这些学生记录。由于某些原因,我的应用程序将在执行一些操作/搜索后显示一个带有一些按钮的初始相对布局它将在列表视图中显示结果,在单击列表视图中的列表项或按钮时,我将显示一些其他布局。这适用于选项卡主机中的所有活动。
如果用户改变方向,我必须恢复相同的状态或相同的屏幕,这意味着如果用户以前看到记录列表,我必须显示记录列表,如果初始我必须只显示初始。我不想强制停止 android 在方向更改或覆盖 public Object onRetainNonConfigurationInstance () 时破坏活动。正如一些博客和 android 文档中所建议的那样,这些可能会导致以后的操作出现问题。我所做的只是在onSaveInstanceState Bundle 中保存所有必需的信息,例如哪个屏幕1 或2 或3、文本视图标签和所有原始数据类型,并在onRestoreInstanceState 中恢复它们。此外,我正在将我的自定义搜索结果对象数组写入文件,并在 onSaveInstanceState 和 onRestoreInstanceStates 之间检索和删除它。由于我的搜索结果有 100 多个对象,并且我存储了大量的原始数据类型列表,当用户快速旋转设备时,堆大小会迅速增加。
最好的办法是什么
1) 坚持 onSaveInstanceState 和 onRestoreInstanceStates,这会使我的屏幕空白一段时间并增加堆大小,当用户旋转多次时不一定执行保存和恢复
2) 将所有需要的数据保持为静态,因为它不是活动的本地数据,因此不会破坏
3) 通过扩展 Application 类来保留所有需要的数据?
【问题讨论】:
-
如果您遵循您的第三点,那就更好了。 .
-
@AndroSelva 表示作为应用程序类中的静态数据,我拥有大量数据。
-
不,我不希望每次屏幕旋转时都进行数据库操作,这就是我将搜索结果 obj 写入文件的原因。
-
听说过共享偏好??可能会对你有所帮助。
标签: android android-orientation