【发布时间】:2020-08-15 08:19:08
【问题描述】:
我正在尝试使用 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)
}
【问题讨论】:
-
捆绑包不是持久的。一旦您关闭应用程序,您存储在
onSaveInstanceState中的内容就会丢失(它更适合用于更改配置等操作,例如更改设备方向时)。您需要其他机制来存储持久数据。比如你可以看看SharedPreferences:developer.android.com/training/data-storage/shared-preferences。
标签: android android-studio kotlin adb