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,再按就到桌面了。原因就是这俩特性导致的。
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,再按就到桌面了。原因就是这俩特性导致的。
相关文章推荐
- android自定义控件实现左右划出菜单并添加点击事件
- Android Widget小组件开发(一)——Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的!
- Android Widget小组件开发(一)——Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的!
- android自定义控件波纹ripple效果
- Android Studio 学习笔记01
- 解决maven管理Android项目时pom报错Unknown packaging: apk
- Android 的性能工具用法 III-Traceview
- Android 异常 Didn't find class .... on path: DexPathList[[z
- 模仿QQ快速显示图片效果
- [Android Pro] Android 官方推荐 : DialogFragment 创建对话框
- ViewPager与PagerAdapter深度解析
- Android Handler内存泄露分析
- Android Studio的使用
- Android中的Service使用
- Android Studio中的EditText控件使用详解
- android 音乐播放bug
- Android本地数据安全尝试(上)——SQLCipher
- [Android] Android5.1系统自带的应用启动次数统计
- Android Studio apk 打包流程
- android自定义ListPreference字体大小