您的位置:首页 > 移动开发 > Android开发

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

2016-02-20 00:28 801 查看
在activity中输入的信息当你再次返回时加入进程被回收,页面会重新建立,你输入的文本就不会显示了,因此,只要我们重写onSaveInstanceState参数是一个bundle类型,你可以给参数添加数据内容,存在此处,因为在oncreat函数中的参数便是此时的bundle类型的数据即savedInstanceState参数,你只要判断其是否为空从而取出你需要恢复的数据,进行逻辑处理即可。(onSavedInstanceState()函数要和oncreat中判断参数一起写才生效,但是手机比较好一直没机会测试这个功能,你要是知道怎么在第二个界面手动回收第一个Activity的进程请告诉我谢谢啊!!!)

public class MainActivity extends Activity {

public EditText editText;

public String a = "lkk";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button button1 = (Button) findViewById(R.id.button1);

editText = (EditText) findViewById(R.id.editText1);

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,再按就到桌面了。原因就是这俩特性导致的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: