如何在android中使用savedinstancestate

uplii1fm  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(538)

这个问题在这里已经有答案了

什么是oncreate(bundle savedinstancestate)(6个答案)
27天前关门了。
我正在写一份申请表,但我不能理解 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 .

kmb7vmvb

kmb7vmvb1#

当你的应用进入后台,android需要其他任务或应用的系统资源(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");
}
mzmfm0qo

mzmfm0qo2#

savedinstancestate是对bundle对象的引用,该对象被传递到每个android活动的oncreate方法中。
oncreate()需要用一个bundle作为参数来调用,所以我们传递savedinstancestate。
在特殊情况下,活动能够使用存储在此包中的数据将自己恢复到以前的状态。如果没有可用的示例数据,则savedinstancestate将为空。
例如,savedinstancestate在活动第一次启动时始终为null,但如果活动在循环期间被销毁,则可能为非null,因为每次活动启动或重新启动时都会调用oncreate。

相关问题