Tün*_*nde 38 android android-lifecycle onrestoreinstancestate onsaveinstancestate
对不起我的不解,但我是android开发的新手.
我有一个活动A和活动B的应用程序,我从活动A转到活动B.当我离开活动A时,onSaveInstanceState方法被调用,但是当我回到活动A时(来自活动B在同一个应用程序中) ),onCreate方法中的bundle 为null.
我该怎么办,以保存活动A以前的状态?我只想存储应用程序生命周期的数据.
有人可以帮我弄这个吗?
这是我的活动A的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null)
{
Log.v("Main", savedInstanceState.getString("test"));
}
else
{
Log.v("Main", "old instance");
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
Log.v("Main", "save instance");
savedInstanceState.putString("test", "my test string");
super.onSaveInstanceState(savedInstanceState);
}
public void buttonClick(View view)
{
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
这是我的活动B的代码,当我按下按钮返回活动A:
public void onBack(View view)
{
NavUtils.navigateUpFromSameTask(this);
}
Run Code Online (Sandbox Code Playgroud)
Sim*_*mon 49
要回答你的问题,请查看android doc:https://developer.android.com/reference/android/app/Activity.html#onRestoreInstanceState(android.os.Bundle)
它表示onRestoreInstanceState在活动生命周期中的onStart()方法之后调用.
Yar*_*lyk 24
保存和恢复状态用于保存用户退出应用程序时过时的当前临时数据.当您通过打开下一个最小化或离开活动时,由于缺少资源可能会被系统杀死,并savedInstanceState在您返回时重新启动.因此,onSaveInstanceState()仅用于保存最小化还原会话数据.
因此,如果您在前面启动一个新的Activity并返回到前一个(您正在尝试做的事情),则可能不会杀死(刚刚停止)并重新启动活动A而不会被销毁.您可以通过签Don't keep activities入开发人员选项菜单强制终止它并恢复.
如果您调用finish()或删除Activity最近的任务列表,savedInstanceState则onCreate()自该任务被清除后将不会传递.
如果值必须持久考虑使用 SharedPreferences.
| 归档时间: |
|
| 查看次数: |
36054 次 |
| 最近记录: |