问题描述
我正在尝试使用ADB模拟关闭应用程序。我将数据存储在onSaveInstanceState()中的束中,以便一旦回到应用程序后就可以取回数据。但是我无法取回数据。 这是我正在使用的代码(来自Google的一个代码实验室)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
dessertTimer = DessertTimer(this.lifecycle)
if(savedInstanceState != null)
{
revenue = savedInstanceState.getInt(KEY_REVENUE,0)
dessertsSold = savedInstanceState.getInt(KEY_DESSERT_SOLD,0)
dessertTimer.secondsCount = savedInstanceState.getInt(KEY_TIMER_SECONDS,0)
}
binding = DataBindingUtil.setContentView(this,R.layout.activity_main)
binding.dessertButton.setonClickListener {
onDessertClicked()
}
binding.revenue = revenue
binding.amountSold = dessertsSold
binding.dessertButton.setimageResource(currentDessert.imageId)
}
这是onSaveInstanceState()中的代码
override fun onSaveInstanceState(outState: Bundle?) {
super.onSaveInstanceState(outState)
outState!!.putInt(KEY_REVENUE,revenue)
outState!!.putInt(KEY_DESSERT_SOLD,dessertsSold)
outState!!.putInt(KEY_TIMER_SECONDS,dessertTimer.secondsCount)
}
解决方法
正如@Beko所说,请勿使用onSaveInstaceState
来保存应用程序关闭后所需的内容。无法恢复。
您有两种解决方案:
- 使用
SharedPreferences.Editor
存储数据。SharedPreference.Editor
可以通过SharedPreferences#edit
获得; - 或将需要保存的数据存储在数据库中,以备日后获取。