【问题标题】:How to save app data in Android after app shutdown using onSaveInstanceState()?应用关闭后如何使用 onSaveInstanceState() 在 Android 中保存应用数据?
【发布时间】: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 中的内容就会丢失(它更适合用于更改配置等操作,例如更改设备方向时)。您需要其他机制来存储持久数据。比如你可以看看SharedPreferencesdeveloper.android.com/training/data-storage/shared-preferences

标签: android android-studio kotlin adb


【解决方案1】:

正如@Beko 所说,不要使用onSaveInstaceState 来保存应用关闭后需要的内容。无法恢复。

您有两种解决方案:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    相关资源
    最近更新 更多