android 成长日记 3.关于Activity的用户体验提高办法和使用技巧说明

  1. 在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,再按就到桌面了。缘由就是这俩特性致使的。 

相关文章
相关标签/搜索