如何在按下后退按钮时存储我的应用程序状态。
当按下后退按钮时,仅调用onPause()
但不调用onSaveInstanceState
,我们可以将数据存储在outState包中。
一个答案可能是sharedPreference
但我的问题是它只会存储int而不是intArray
就像捆绑一样。
有没有办法明确调用onSaveInstanceState
?
答案 0 :(得分:2)
用户600027 ...即使您能够调用onSaveInstanceState,捆绑也不会被持久化,我不相信它会在硬杀之后可用。您可以编写一个方法将int数组转换为字符串集,然后通过调用putStringSet()来持久保存数据,然后编写一个方法将一组字符串转换为一个int数组。
JAL
答案 1 :(得分:1)
您可以在Activity#onDestroy()
进行正常保存。
我认为onCreate(Bundle)
,onSaveInstanceState(Bundle)
和onRestoreInstanceState(Bundle)
背后的意图是为您提供在后台被杀之前保存状态的机会。然后应用程序应该恢复并向用户显示,好像什么也没发生。
在后退按钮上按下用户在某种意义上"完成"随着活动。应保存的数据量不同。是的,在这种情况下,将您的州保存在SharedPreferences
中是个好主意。