【问题标题】:Preserve activity state after swiping it from recent app list?从最近的应用程序列表中滑动后保留活动状态?
【发布时间】:2015-07-10 06:51:45
【问题描述】:

我想在我的 Activity 从“最近使用的应用”列表中滑出时保留它的状态,以便当用户再次启动我的应用时,它会处于用户离开它时的相同状态。

根据我的调试,当显示最近的应用程序列表时,我的活动的onSaveInstanceState() 似乎被调用,但是,在我刷掉我的应用程序并重新启动它之后,我再也没有找回我的savedInstanceState

如何在此交互过程中保持我的状态?

【问题讨论】:

  • 您是否将状态保存在 saveinstance 包中?如果你这样做了,那么它将在 onCreate 中可用
  • @PrakashNadar:这正是问题所在——我的 savedInstanceState 在我从“最近的应用程序”列表中关闭后,下次启动它时不会传回我的活动。
  • 当应用程序被刷走时,将不会提供保存的实例,因为活动被用户操作杀死。用户期望应用程序正在“重置”,即就像杀死一个应用程序和重新启动.. 所以你应该为这个期望设计应用程序或 UX,而 android 正在确保这会发生。只有当用户在应用程序或更高级别的活动之间切换导致活动关闭时,才会将保存的实例提供给您。如果您真的真的希望恢复状态(我认为这是一个坏主意),您可能应该将状态保存在一些持久性存储中。

标签: android android-activity android-recents


【解决方案1】:

如何在此交互过程中保持我的状态?

将该状态存储在您认为合适的数据库、SharedPreferences、文件或云中。您将不再有一个进程,因此您需要将您的状态永久保存在某个地方,然后知道稍后重新加载它。

【讨论】:

  • 我明白了...有没有办法判断活动是否由于最近的应用滑动而关闭,而不是正常的 onSaveInstanceState?
  • @DmitryBrant:嗯,onSaveInstanceState() 将在用户从概览屏幕中删除您的任务之前被调用 long。如果你碰巧有一个服务正在运行,它应该被称为with onTaskRemoved(),你的进程可能会在任务关闭后存活下来。但是,我从未尝试过,鉴于这方面的抱怨,我的猜测是它不可靠。否则,不,您不会收到关闭任务的通知。
  • 谢谢!我想一个更好的问题是:如果我不知道我的活动关闭的原因,我怎么能“知道以后重新加载它”?我应该总是使用 SharedPreferences 而不是 savedInstanceState 吗?
  • @DmitryBrant:抱歉,我无法回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多