Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在“活动”上调用onPause时,数据会发生什么变化_Android_Android Activity - Fatal编程技术网

Android 在“活动”上调用onPause时,数据会发生什么变化

Android 在“活动”上调用onPause时,数据会发生什么变化,android,android-activity,Android,Android Activity,我在应用程序上运行一个活动,当用户单击搜索图标时,另一个活动(谷歌地图)打开。 所以我假设调用了第一个activity onPause,当Maps活动完成时,调用了第一个activity onResume 因此,我的问题是,在调用“地图”活动之前,用户输入并分配给第一个活动中变量的所有数据会发生什么变化?这些数据会丢失吗?这取决于未清除回退时的情况。请阅读这篇文章,其中有一些。当您开始另一项活动时,Android会存储用户数据以供查看 onSaveInstanceState方法将被执行并存储数据

我在应用程序上运行一个活动,当用户单击搜索图标时,另一个活动(谷歌地图)打开。 所以我假设调用了第一个activity onPause,当Maps活动完成时,调用了第一个activity onResume


因此,我的问题是,在调用“地图”活动之前,用户输入并分配给第一个活动中变量的所有数据会发生什么变化?这些数据会丢失吗?

这取决于未清除回退时的情况。请阅读这篇文章,其中有一些。

当您开始另一项活动时,Android会存储用户数据以供查看

onSaveInstanceState
方法将被执行并存储数据

调用以在终止活动之前从活动中检索每个实例的状态,以便可以在onCreate(Bundle)或onRestoreInstanceState(Bundle)中还原状态(由此方法填充的Bundle将同时传递给这两个)

你可以查看更多信息

如果要保留变量,可以重写onSaveInstanceState

static final String STATE_SCORE = "playerScore";
...

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save the user's current game state
    savedInstanceState.putInt(STATE_SCORE, mCurrentScore);

    super.onSaveInstanceState(savedInstanceState);
}
为了让他们回来

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        // Restore value of members from saved state
        mCurrentScore = savedInstanceState.getInt(STATE_SCORE);     
    }
    ...
}

不,不是全部。用户输入的数据仍然存在,但必须将变量保存在

@覆盖
SaveInstanceState上受保护的无效(束超出状态){
super.onSaveInstanceState(超出状态);
}

把他们弄回来

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
}

当然不是,如果活动未被销毁,则用户输入的所有数据仍保存在avtivity上。谢谢,但我有一个全局字符串,表示存储照片的目录,当我尝试在onResume中获取值时,它是空的。.在我的EditText字段中输入的所有数据都成功保存,但我不明白的是,我有一个全局字符串,表示保存图像和位图本身的SD卡路径,这两个都没有保存,它们都是通过onActivityResult调用指定的值。如果要保存变量,则只保存视图状态,您需要在saveInstanceState上手动添加它们,然后在RestoreInstanceState上重新获取它们。我们只能使用saveInstanceState保存原语和字符串,还是可以保存位图?您可以,您需要使用parcelable接口。