Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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
Java 如何在android中使用savedInstanceState_Java_Android - Fatal编程技术网

Java 如何在android中使用savedInstanceState

Java 如何在android中使用savedInstanceState,java,android,Java,Android,我正在处理一个应用程序,但当它发生时,我无法正确理解savedInstanceState: package com.android.Test; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class Test extends AppCompatActivity { private TextView mT

我正在处理一个应用程序,但当它发生时,我无法正确理解
savedInstanceState

package com.android.Test;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class Test extends AppCompatActivity {

   private TextView mTextView = null;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState == null) {
       Toast. makeText(getApplicationContext(),"welcome",Toast. LENGTH_SHORT).show();
    } else {
       Toast. makeText(getApplicationContext(),"Thanks visit again",Toast. LENGTH_SHORT).show();
    }
  }
}
当应用程序长时间关闭和打开时,活动是如何工作的。
使用
savedInstanceState
onRestoreInstanceState

是否还有其他方法可以实现这一点savedInstanceState是对Bundle对象的引用,它被传递到每个Android活动的onCreate方法中

onCreate()希望以Bundle作为参数调用,因此我们传递savedInstanceState

private String restored_string;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    if (savedInstanceState != null){
        
       restored_string = savedInstanceState.getString("key");
    }
}



@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("key", "string value");
}
在特殊情况下,活动能够使用此捆绑包中存储的数据将自己恢复到以前的状态。如果没有可用的实例数据,则savedInstanceState将为null


例如,第一次启动活动时,savedInstanceState始终为空,但如果活动在循环期间被销毁,则可能为非空,因为每次活动启动或重新启动时都会调用onCreate。

当应用程序进入后台且安卓需要系统资源(cpu时间、内存)时对于其他任务或应用程序,您的应用程序将输入savedInstance,并调用覆盖的方法onSaveInstanceState(Bundle outState)。 当用户重新输入活动时,onCreate(Bundle savedInstanceState)中的savedInstanceState将不为null,因此您可以重新创建活动所需的参数,这些参数以前已保存

在“开发人员选项”菜单下启用“不保留活动”后,您可以强制执行此行为,并且每次离开活动时,您的应用程序都会调用SaveInstanceState

private String restored_string;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    if (savedInstanceState != null){
        
       restored_string = savedInstanceState.getString("key");
    }
}



@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("key", "string value");
}

旋转设备时,
savedInstanceState
将不同于null。请注意,您必须解锁设备上的方向,并且没有任何规则阻止清单上的活动。