【问题标题】:Alternative to onSaveInstanceState(Bundle) and onRestoreInstanceState(Bundle), for save data when changing orientation替代 onSaveInstanceState(Bundle) 和 onRestoreInstanceState(Bundle),用于在更改方向时保存数据
【发布时间】:2014-09-08 17:29:16
【问题描述】:

当我将方向从纵向更改为横向时,数据会丢失。 我知道 oncreate 再次被调用,一切都丢失了。

我知道要保存数据,我将数据放在 onSaveInstanceState() 方法中的 Bundle 中,并在 onRestoreInstanceState() 方法中获取数据。 例如像这里:Example!!

但这真的很烦人,而且时间紧迫。

是否可以在不丢失数据的情况下改变方向?

【问题讨论】:

  • 但这真的很烦人,而且时间紧迫。,什么以及为什么?
  • 因为我必须将所有数据放入包中并再次检索它。再次必须查看例如蓝牙连接的状态是否为真,如果为真,则再次设置按钮的颜色,依此类推。
  • imo,您正在尝试解决一个非问题。您是否遇到过性能问题?
  • 不,但我发现数据在方向改变时丢失真的很愚蠢。我不明白为什么android系统会抛出数据。它只需要更改方向的布局。
  • 它不会丢弃数据。它会丢弃您在屏幕上拥有的类/活动的当前实例。

标签: android android-orientation


【解决方案1】:

您可以使用 SharedPreferences 并将数据保存在其中,当方向发生时,您可以在其中获取数据。你跟着教程here.

但我真的不建议仅在方向更改时使用它。 OnSaveIntance 在方向改变方面比 SharedPreferences 更可取,但既然你问另一个是什么。

【讨论】:

  • 是一样的。没有任何改进。
  • @aut_silvia 你实现了吗??
  • 看看我的问题的评论,我想这解释了我问这个问题的原因。
  • 并非您要保存的所有信息。下次启动应用程序时,您可能想从头开始。如果在共享首选项中保存状态如何区分只是旋转和启动应用程序?为此使用共享首选项绝对不是推荐的方式。我同意让应用程序“可旋转”有时需要付出很大的努力。因此锁定屏幕进行旋转有时是一种更简单的编程解决方案。
【解决方案2】:

我,将 configChanges 添加到清单文件中的活动:

<activity>
     android:name=".YourActivity"
     android:configChanges="orientation|keyboardHidden|screenSize"
     ...

查看此链接以获取有关configChanges 的更多详细信息: http://developer.android.com/guide/topics/manifest/activity-element.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2011-05-05
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多