activity小总结
来源:互联网 发布:秃用一体握把淘宝 编辑:程序博客网 时间:2024/04/30 16:08
activity 的7个方法,4种状态,3个循环
7个方法,onCreate()–> onStart()–> onResume()–> onPause()–>onStop()–> onDestroy().—>onRestart();
一般在onCreate中进行布局的加载,控件的绑定;在onDestroy中进行内存的释放;
onStart方法,执行后,界面可见,onResume方法执行后,可以和用户进行界面的交互,如果界面被部分遮挡,比如弹出了一个弹窗,此时,只会执行onPause而不会执行onStop,只有当界面被完全遮挡的时候,才会执行onStop。如果销毁了页面,就会执行onDestroy,如果手机内存不够了,会开始回收内存,回收执行了onDestroy的页面,如果内存还是不足,会继续回收,执行了onStop方法的页面,如果还是不足,会继续回收优先级更低一点的页面。
在onPause中会释放掉消耗CPU的资源,保存一些关键性数据,但是这些操作一定要快,因为执行了onPause系统就准备去启动或者恢复另一个活动了,操作慢,会印象到新的栈顶活动的使用;
如果一个页面执行了onStop,但是还没有执行onDestroy,此时又重新启动该页面,此时,会执行onRestart方法,然后执行onStart方法,重新显示页面;如果已经执行了onDestroy那绘制的页面已经被销毁了,重新启动,就需要重新绘制,就是说,需要重新从onCreate开始向下执行;
4种状态:运行状态,暂停状态,停止状态,销毁状态,
3个循环,完整生命周期循环(7个完整方法);可见生命周期循环(onStart–>onstop的循环,在onStart中进行数据的加载,在onStop中进行资源的释放);前台生命周期循环(onresume–>onPause)
当一个活动,执行了onCreate之后,如果没有被回收,则当前活动的相应的状态和成员变量都会被保留下来,如果,此时手机内存不足了,这个活动被系统回收掉了,当我们重新按下回退按钮,依然会见到这个活动,但是它是执行了onCreate重新创建的,之前的那个活动已经销毁了,它的那些成员变量,当然肯定不存在了,
这样的用户体验就很不好啊,比如一个输入编辑内容页面,跳转到其他页面一下,再回来,之前编辑的内容都没有了,这就造成了很不好的用户体验。
解决办法
我们知道,onCreate和onScedInstancedState()方法都有一个bundle类型的参数的。在onScedInstancedState中,把零时数据可以保存进去,然后再重新onCreate创建时候取出来。
重写onSavedInstanceState()这个方法,在这个方法中,将数据保存进bundle中,这个方法保证,一定会在活动被回收之前调用,因此,可以使用这个方法,来解决活动被回收时零时数据得不到保存的问题。
之后,在onCreate中判断,如果bundle不为空就取出保存进去的零时数据,重新写入页面,
代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
if(savedInstanceState!=null){
//取出保存进bundle的零时数据
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
//保存零时数据进bundle
}
- Activity小总结
- activity小总结
- Activity小总结
- android 学习 Activity启动模式小总结
- android开发小知识点之Activity总结
- 关于Activity生命周期的一些小总结
- 关于Activity生命周期的一些小总结
- 关于activity的使用规范小总结
- Activity总结
- Activity总结
- Activity 总结
- Activity总结
- Activity总结
- Activity总结
- Activity总结
- Activity总结
- Activity总结
- Activity总结
- 张纯如 - 南京 南京
- Java程序员从笨鸟到菜鸟之(六十七)细谈Spring(一)spring简介
- 坚持#第124天~坚持自己的道路,默默的低调的前进!
- [Leetcode] 23. Merge k Sorted Lists 解题报告
- JR-02
- activity小总结
- vi常用命令操作
- Java程序员从笨鸟到菜鸟之(六十八)细谈Spring(二)自己动手模拟spring
- leetcode_206(链表反转)
- 浅谈装饰者模式的简单使用和思路
- DBCP连接池
- 二维数组的打印和碰壁条件判断
- Java程序员从笨鸟到菜鸟全部博客目录
- MySQL中char,varchar与text类型的区别和选用