这个问题在这里已经有答案了:
什么是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
.
2条答案
按热度按时间kmb7vmvb1#
当你的应用进入后台,android需要其他任务或应用的系统资源(cpu时间、内存)时,你的应用将进入savedinstance,并调用覆盖的方法onsaveinstancestate(bundle outstate)。当用户重新输入活动时,oncreate(bundle savedinstancestate)中的savedinstancestate将不为null,因此您可以为活动重新创建之前保存的所需参数。
在“开发人员选项”菜单下启用“不保留活动”后,您可以强制执行此行为,并且每次退出活动时,应用程序都会调用SaveInstanceState。
mzmfm0qo2#
savedinstancestate是对bundle对象的引用,该对象被传递到每个android活动的oncreate方法中。
oncreate()需要用一个bundle作为参数来调用,所以我们传递savedinstancestate。
在特殊情况下,活动能够使用存储在此包中的数据将自己恢复到以前的状态。如果没有可用的示例数据,则savedinstancestate将为空。
例如,savedinstancestate在活动第一次启动时始终为null,但如果活动在循环期间被销毁,则可能为非null,因为每次活动启动或重新启动时都会调用oncreate。