Sobes.tech
Junior — Middle

How are data stored in Activity during a configuration change, besides using the Bundle object?

sobes.tech AI

Answer from AI

In addition to saving state through the Bundle object in the onSaveInstanceState and onRestoreInstanceState methods, in Android, you can use:

  • ViewModel from Android's architecture components. ViewModel lives longer than the Activity during configuration changes and retains data without losing it when the Activity is recreated.

  • Retain Fragment — a fragment with setRetainInstance(true) that is preserved during Activity recreation (deprecated approach).

  • Saving data in persistent storage (e.g., SharedPreferences, database) if data needs to be retained between sessions.

Example of using ViewModel:

class MyViewModel : ViewModel() {
    var data: String? = null
}

class MyActivity : AppCompatActivity() {
    private lateinit var viewModel: MyViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
        // Use viewModel.data, it will be preserved during configuration changes
    }
}

Thus, ViewModel is the preferred way to save data during configuration changes without using Bundle.