在activity中输入的信息当你再次返回时加入进程被回收,页面会从新创建,你输入的文本就不会显示了,所以,只要咱们重写onSaveInstanceState参数是一个bundle类型,你能够给参数添加数据内容,存在此处,由于在oncreat函数中的参数即是此时的bundle类型的数据即savedInstanceState参数,你只要判断其是否为空从而取出你须要恢复的数据,进行逻辑处理便可。(onSavedInstanceState()函数要和oncreat中判断参数一块儿写才生效,可是手机比较好一直没机会测试这个功能,你要是知道怎么在第二个界面手动回收第一个Activity的进程请告诉我谢谢啊!!!)ide
public class MainActivity extends Activity {函数
public EditText editText;测试
public String a = "lkk";spa
@Override指针
protected void onCreate(Bundle savedInstanceState) {orm
super.onCreate(savedInstanceState);进程
setContentView(R.layout.activity_main);内存
Button button1 = (Button) findViewById(R.id.button1);get
editText = (EditText) findViewById(R.id.editText1);it
TextView textView = (TextView) findViewById(R.id.textView1);
if(savedInstanceState != null){
String temp = savedInstanceState.getString("data");
editText.setText(temp);
a= temp;
textView.setText(a);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String save = editText.getText().toString();
outState.putString("data", save);
}
}
这里我把oncreat取得数据不只写进了EditText还复制给了TextView,可是我一直不能实现内存是回收,因此回头再测试吧,****
我找到了让他调用onSaveInstanceState的办法了,就是手机横竖屏幕切换时候,
这里必定要先声明初始化在赋值,也就是把if放在findViewById方法后边,要不一直空指针,旋转屏幕自动退出该activity,看似简单,我看了半个小时啊。记住啊。
2.activity的启动模式
默认就是standard。singleTop(只在本身打开本身的时候不会从新生成,就是你在栈顶的时候不会建立你,只会直接让你继续显示而已)。singletask(也就是只要栈里面有这个activity,若是发现已经存在则直接使用该实例,并把在这
个活动之上的全部活动通通出栈)。singleInstance中就很特殊了,就是可使得特定的activity本身为本身生成一个栈堆,
例如,1 2 3三个页面 1和2是singletask,3是singleInstance,而后1打开2,2打开3,3,打开1.此时我按返回确定是回到3,再按就到桌面了。缘由就是这俩特性致使的。