Activity生命周期
2015-08-18 19:24
162 查看
1.Activity的生命周期
1. Activity状态
激活状态 : Activity出于前台 , 栈顶位置;
暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , 后面的Activity出于暂停状态;
停止状态 : 被其它的Activity覆盖 , 用户不可见 , 但是仍然存在;
2.Activity操作生命周期的方法
onCreate() : 初始化一些成员变量 , 如View等 , 此时进入停止状态;
onStart() : 被用户可见之前调用 , 调用之后进入暂停状态 , 如果不满足条件我们不想让用户进入应用 , 可以在这里进行限制 , finish掉该Activity;
onResume() : 在与用户交互之前调用 , 调用之后进入激活状态;
onPause() : 激活另一个Activity时调用 , 调用之后进入暂停状态 , 界面可见 , 失去焦点; 该操作用来保存当前Activity数据;
onStop() : Activity被覆盖前调用 , 调用之后该Activity不可见; 该方法用来关闭旧的Activity , 注意是完全不可见的时候才会调用这个方法;
onDestroy() : Activity被销毁前调用 ;
注意 : 在暂停状态 和 停止状态 , 如果内存紧张 , 该Activity会被系统回收;
3.Activity运作流程
(1)第一次启动Activity A
首先调用onCreate()方法创建Activity进入停止状态 -> 调用onStart()方法进入暂停状态 -> 调用onResume()方法进入激活状态;
(2)从Activity A 跳转到 Activity B
A先执行onPause()方法进入暂停状态 -> B执行onCreate()方法进入停止状态 -> B执行onStart()方法进入暂停状态 -> B执行onResume()方法进入激活状态 -> A被完全覆盖执行onStop()方法进入停止状态;
(3)从ActivityB 回到 Activity A
B执行onPause()方法进入暂停状态 -> A调用onRestart()方法进入停止状态 -> A调用onStart()方法进入暂停状态 -> A调用onResume()方法进入激活状态 -> B被覆盖调用onStop()方法进入停止状态 -> B执行onDestroy()方法销毁
这里注意Activity的栈是不可逆的 , 只能后退 , 不能前进 , 回退后 , 原来的栈顶的Activity就马上销毁了.
2.关于button点击事件的写法
实现从一个界面跳向另一个界面的转换Button button= (Button) findViewById(R.id.button2);//获取button2按钮 button.setOnClickListener(new View.OnClickListener() {//建立点击事件 @Override public void onClick(View v) { Intent intent=new Intent(getApplicationContext (),SecondActivity.class);//建一个Intent对象,跳转到SecondActivity startActivity(intent);//运行跳转 } });
相关文章推荐
- IOS-TextField控件详解
- 将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:
- 自定义异常类一
- fanqiang
- python视频教程大全集下载啦!超级全的教程!
- Dream------spark--spark集群的环境搭建
- Fragment 实现tab页卡切换并保存界面状态,动态添加Fragment
- jQuery 从input中读取的内容的类型
- 【ODPS】本地数据库数据批量上传到ODPS中
- java请求https
- 使用tinyxml解析XML配置文件
- hdu4109(拓扑排序,dp)
- android客户端从服务器端获取json数据并解析的实现代码(重要)
- 给phpcms v9加入一个主题radio无线电button,它可反复使用,以创建不同的专题部分内容编辑器,添加一个主题来定义自己的领域
- leetcode---different ways to add parentheses
- [Unity]SQLite-C#调用
- TCP快速重传与快速恢复原理分析
- HUD-5399 Too Simple(数学)
- HDU 1865 六度分离 <裸的迪杰斯特拉算法>
- springMVC 配置jdbcTemplate连接Oracle数据库出错