Я делаю это, потому что не хочу постоянно передавать данные между действиями, используя Intent.putString, Intent.putInt или Shared Preferences, поскольку данные полезны только для текущего сеанса.
blockquote>Похоже, вы хотите съесть свой пирог и съесть его; что является проблемой, потому что если вы не используете Intent bundle и не используете постоянство диска; тогда вам по крайней мере потребуется реализовать
BaseActivity.onSaveInstanceState()
, иначе ваш бедный пользователь потеряет свои данные (состояние), когда через некоторое время вернется в ваше приложение;)Представьте себе, вы задали поля в Activity1 Я перехожу к Activity3, затем получаю телефонный звонок, который занимает 20 минут. Тем временем Android завершает работу моего приложения, я возвращаюсь с телефонного звонка, приложение запускается с нуля в Activity3, и материал, который я предположительно установил в Activity1, но никогда не сохранял каким-либо образом, теперь
null
или""
0
. Не очень хороший UX, особенно когда он вызывает сбои тоже.
Простое решение для вашего сценария состоит в том, чтобы вместо разложения вашего
Player
вручную каждый раз, просто использовать@Parcelize
.apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' androidExtensions { experimental = true }
Затем
@Parcelize data class Player: Parcelable ( val name: String, val age: Int, val gender: String )
И
// inline fun <reified T: Activity> Activity.intentFor(builder: Intent.() -> Unit) { // return Intent(this, T::class.java).apply(builder) // } startActivity(intentFor<OtherActivity>() { putParcelableExtra("player", player) }) val player = intent.getParcelableExtra("player")
Если можно овладеть на копии В COM, это должно сделать Вас счастливыми.
Я также рекомендую Вам считать Существенный COM Don Box после получения фундаментальных понятий COM от Dale Rogerson В COM.
Если бы можно стоять он, я предложил бы В OLE2. Это - большая, длинная утомительная книга, которая вдается в довольно мало подробностей того, как COM работает. Я волновал чтение этой книги несколько раз, каждый раз получая немного глубже понимание.