You need to override onSaveInstanceState(Bundle savedInstanceState)
and write the application state values you want to change to the Bundle parameter like this:
@Override
public
void
onSaveInstanceState
(
Bundle
savedInstanceState
)
{
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
savedInstanceState
.
putBoolean
(
"MyBoolean"
,
true
);
savedInstanceState
.
putDouble
(
"myDouble"
,
1.9
);
savedInstanceState
.
putInt
(
"MyInt"
,
1
);
savedInstanceState
.
putString
(
"MyString"
,
"Welcome back to Android"
);
// etc.
super
.
onSaveInstanceState
(
savedInstanceState
);
}
The Bundle is essentially a way of storing a NVP map, and it will get passed in to onCreate
and also onRestoreInstanceState
where you'd extract the values like this:
@Override
public
void
onRestoreInstanceState
(
Bundle
savedInstanceState
)
{
super
.
onRestoreInstanceState
(
savedInstanceState
);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
boolean
myBoolean
=
savedInstanceState
.
getBoolean
(
"MyBoolean"
);
double
myDouble
=
savedInstanceState
.
getDouble
(
"myDouble"
);
int
myInt
=
savedInstanceState
.
getInt
(
"MyInt"
);
String
myString
=
savedInstanceState
.
getString
(
"MyString"
);
}
本文介绍如何通过覆盖 onSaveInstanceState 方法并使用 Bundle 参数来保存应用程序的状态,包括布尔值、双精度浮点数、整数和字符串等类型的数据。此外,还介绍了如何在 onRestoreInstanceState 中从 Bundle 恢复这些状态。

201

被折叠的 条评论
为什么被折叠?



