页面跳转和数据传递
2016-05-09 本文已影响0人
fantasy_dandan
Activity
- 安卓四大组件之一
创建Activity
- 定义java类,继承Activity
- 在清单文件中配置activity标签
Activity跳转
- 显示跳转
- 同一应用中,指定目标Activity的zi字节码和当前的上下文
- 不同应用中,指定目标Activity所在的应用的包名和目标Activity的包名加类名
- 隐私跳转
- 指定action和data
应用包名和类包名可以不一样,默认是一样的。应用包名也是类包名
配置intent-filter让activity可以隐私启动
- 在清单文件的activity标签下,配置intent-filter子节点,其中再配置action和category 如果不配只能被显式启动。
在所有的清单文件中去寻找与程序员创建的intent匹配的intent-filter的Activity。找到则启动,找不到则抛异常。
Activity 跳转传递数据
Activity生命周期
Activity生命周期- onCreate():创建时调用
- onStart():在屏幕上可见,但是没有获得焦点
- onResume():可见并获得焦点
- onPause(): 可见,但是失去焦点
- onStop():不可见
- onDestory( ):销毁时调用
- 手机内存不足时,会杀死之前启动的进程,按照LRU算法(最近最少使用算法)锁定杀死谁
Activity启动模式
- Activity task stack:任务栈(存放Activity实例的)
- 栈
- 连续的内存空间
- 后进先出
- standard
默认是标准默认 - singleTop
如果启动的activity在栈顶则不创建,不跳转
应用场景:防止第三方多次启动 - singleTask
如果Activity没有被创建任何实例,那么启动时会创建,如果已经在栈顶了,就不会再创建了,那么启动时是返回至该Activity而不会再创建该Activity。保证该Activity时在栈中只有一个实例。
应用场景:手机浏览器
singleTask应用场景
这样做为了节省资源 - singleStance
在一个单独的任务栈中创建该Activity的实例,然后再也不会创建第二个实例了,以后每次启动该Activity,都会把该Activity的所显示的栈显示至前台。
保证整个系统的内存都只存在唯一个该Activity实例
应用场景:
来电界面
横竖屏切换
屏幕切换目前一般不支持横竖屏切换
写死屏幕切换 竖屏
如果一套布局可以支持横竖屏的话。
不要系统处理- 默认情况横竖屏切换会触发生命周期方法重新执行,Activity销毁
- 使用以下代码让横竖屏切换时不重建Activity
android:configChanges="orientation|screenSize|keyboardHidden"
- 用以下代码写死屏幕方向
android:screenOrientation="portrait"
也可以这么写死屏幕
代码写死