安卓中的四大组件_Activity
2013-06-23 15:21
232 查看
定义类继承Activity.
在AndroidManifest.xml文件中声明Activity信息.
在类中实现onCreate方法, 去设置布局
多个页面之间的跳转
显式跳转, 在可以引用到目标类的字节码文件的情况下使用. 一般用于在自己程序的内部. 显示跳转不可以跳转到其他程序的页面中.
隐式跳转, 可以在当前程序跳转到另一个程序的页面. 而且不需要引用那个类. 前提条件:必须知道另一个程序的页面的动作和信息.
另一个程序的页面在清单文件中给Activity添加一个动作 <intent-filter> <action android:name="com.ycy.second" /> //随便指定
</intent-filter>
打开浏览器页面
打开系统短信发送的页面
Intent传递数据.
可传递类型: 八大基本类型和数组, ArrayList, Bundle数据捆, 序列化接口(javabean)
人品计算器
Activity之间回传数据
使用startActivityForResult方法开启新的页面
在被开启的新的页面里, 调用setResult方法设置回传的数据. 设置完后不会立刻传递到前一个页面, 而是等待新的页面关闭后, 才回传.
回传给开启Activity的onActivityResult方法.
Activity生命周期
startActivity开启一个Activity时, 生命周期的过程是: onCreate -> onStart(可见, 但不可交互) -> onResume(可见, 可交互)
点击back键关闭一个Activity时, 生命周期的过程是: onPause(部分可见, 不可交互) -> onStop(完全不可见) -> onDestory(销毁了)
当开启一个新的Activity(以对话框形式), 新的activity把后面的activity给盖住一部分时, 此时,先前的activity的生命周期执行的方法是: onPause(部分可见, 不可交互)
当把新开启的Activity(以对话框形式)给关闭时, 此时,先前的activity的生命周期执行的方法是: onResume(可见, 可交互)
当开启一个新的activity把后面的activity完全盖住时, 此时,先前的activity的生命周期的方法执行顺序: onPause -> onStop(完全不可见)
当把新开启的activity(完全盖住)给关闭时, 此时,先前的activity的生命周期的方法执行顺序是: onRestart -> onStart -> onResume(可见, 可交互)
实际工作中使用的方法
onResume 可见, 可交互. 把动态刷新的操作启动.
onPause 部分可见, 不可交互. 把动态刷新的一些操作, 给暂停了.
onCreate 初始化一些大量的数据.
onDestory 把数据给释放掉, 节省内存.
横竖屏切换时, 生命周期, 默认情况:会把activity销毁再创建.
不让Activity销毁在创建:在清单文件中的activity节点中加入属性
4.0以下版本 android:configChanges="orientation|keyboardHidden"
4.0以上版本 android:configChanges="orientation|screenSize"
兼容所有版本 android:configChanges="orientation|keyboardHidden|screenSize"
指定Activity以对话框的形式显示, 在清单文件中,activity节点追加以下主题
任务栈, 用来提升用户体验的.
程序打开时就创建了一个任务栈, 用于存储当前程序的activity.
所有的activity属于一个任务栈.
一个任务栈包含了一个activity的集合, 去有序的选择哪一个activity和用户进行交互
只有在任务栈栈顶的activity才可以跟用户进行交互.
任务栈可以移动到后台, 并且保留了每一个activity的状态. 并且有序的给用户列出它们的任务, 而且还不丢失它们的状态信息.
退出程序: 把所有的任务栈中所有的activity清除出栈, 然后任务栈销毁.
问题:
用户体验差, 需要点击多次返回才可以把程序退出了.
数据冗余, 重复数据太多, 会导致内存溢出的问题(OOM)
Activity的启动模式, 在activity节点里指定launchMode的属性.
standard 标准模式(activity的默认模式), 导致上面的问题出现.
singleTop 单一顶部模式: 如果一个activity的实例已经存在当前任务栈的栈顶, 系统会发送一个Intent给那个实例的onNewIntent方法. 应用场景: 防止别的程序恶意打开我们的页面.
singleTask 单一任务栈模式: 如果activity的实例已经存在任务栈中, 系统就不会创建一个新的实例, 而是调用那个实例的onNewIntent方法, 并且把那个已经存在的activity 实例以上所有的activity给清除出栈, 把自己变成栈顶的效果. 应用场景: 商品列表 -> 商品详情 -> 图片详情 -> 大图查看 想从大图查看立刻回到商品列表, 并且把后面开启的三个页面关闭时.
singleInstance 单一实例模式: 系统会创建一个新的任务栈把activity的实例放在新的任务栈的栈顶(栈底), 其他的activity页面不会在这个任务栈中创建实例. 如果activity的实例已经存在, 系统会调用那个实例的onNewIntent方法. 应用场景: 在整个系统中只需要初始化一次的界面.
在AndroidManifest.xml文件中声明Activity信息.
<activity android:name="com.ycy.activitydemo.SecondActivity" > </activity>
在类中实现onCreate方法, 去设置布局
多个页面之间的跳转
显式跳转, 在可以引用到目标类的字节码文件的情况下使用. 一般用于在自己程序的内部. 显示跳转不可以跳转到其他程序的页面中.
隐式跳转, 可以在当前程序跳转到另一个程序的页面. 而且不需要引用那个类. 前提条件:必须知道另一个程序的页面的动作和信息.
另一个程序的页面在清单文件中给Activity添加一个动作 <intent-filter> <action android:name="com.ycy.second" /> //随便指定
<category android:name="android.intent.category.DEFAULT" /> // 指定传递的数据是以: money开头 <data android:scheme="money"/> // 指定传递过去的类型, 用于区分当前是什么操作. <data android:mimeType="com.ycy/mbx" />
</intent-filter>
打开浏览器页面
/*<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" /> <data android:scheme="https" /> <data android:scheme="about" /> <data android:scheme="javascript" /> </intent-filter>*/ Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.BROWSABLE"); Uri uri = Uri.parse("http://www.ycy.com"); intent.setData(uri); startActivity(intent);
打开系统短信发送的页面
/*<intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.SENDTO" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="sms" /> <data android:scheme="smsto" /> </intent-filter>*/ Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.BROWSABLE"); Uri uri = Uri.parse("sms:5556"); intent.setData(uri); // 使用intent传递数据 intent.putExtra("sms_body", "今晚7天假日酒店旁边的肯德基不见不散!!!"); startActivity(intent);
Intent传递数据.
可传递类型: 八大基本类型和数组, ArrayList, Bundle数据捆, 序列化接口(javabean)
人品计算器
Activity之间回传数据
使用startActivityForResult方法开启新的页面
在被开启的新的页面里, 调用setResult方法设置回传的数据. 设置完后不会立刻传递到前一个页面, 而是等待新的页面关闭后, 才回传.
回传给开启Activity的onActivityResult方法.
Activity生命周期
startActivity开启一个Activity时, 生命周期的过程是: onCreate -> onStart(可见, 但不可交互) -> onResume(可见, 可交互)
点击back键关闭一个Activity时, 生命周期的过程是: onPause(部分可见, 不可交互) -> onStop(完全不可见) -> onDestory(销毁了)
当开启一个新的Activity(以对话框形式), 新的activity把后面的activity给盖住一部分时, 此时,先前的activity的生命周期执行的方法是: onPause(部分可见, 不可交互)
当把新开启的Activity(以对话框形式)给关闭时, 此时,先前的activity的生命周期执行的方法是: onResume(可见, 可交互)
当开启一个新的activity把后面的activity完全盖住时, 此时,先前的activity的生命周期的方法执行顺序: onPause -> onStop(完全不可见)
当把新开启的activity(完全盖住)给关闭时, 此时,先前的activity的生命周期的方法执行顺序是: onRestart -> onStart -> onResume(可见, 可交互)
实际工作中使用的方法
onResume 可见, 可交互. 把动态刷新的操作启动.
onPause 部分可见, 不可交互. 把动态刷新的一些操作, 给暂停了.
onCreate 初始化一些大量的数据.
onDestory 把数据给释放掉, 节省内存.
横竖屏切换时, 生命周期, 默认情况:会把activity销毁再创建.
不让Activity销毁在创建:在清单文件中的activity节点中加入属性
4.0以下版本 android:configChanges="orientation|keyboardHidden"
4.0以上版本 android:configChanges="orientation|screenSize"
兼容所有版本 android:configChanges="orientation|keyboardHidden|screenSize"
指定Activity以对话框的形式显示, 在清单文件中,activity节点追加以下主题
android:theme="@android:style/Theme.Dialog"
任务栈, 用来提升用户体验的.
程序打开时就创建了一个任务栈, 用于存储当前程序的activity.
所有的activity属于一个任务栈.
一个任务栈包含了一个activity的集合, 去有序的选择哪一个activity和用户进行交互
只有在任务栈栈顶的activity才可以跟用户进行交互.
任务栈可以移动到后台, 并且保留了每一个activity的状态. 并且有序的给用户列出它们的任务, 而且还不丢失它们的状态信息.
退出程序: 把所有的任务栈中所有的activity清除出栈, 然后任务栈销毁.
问题:
用户体验差, 需要点击多次返回才可以把程序退出了.
数据冗余, 重复数据太多, 会导致内存溢出的问题(OOM)
Activity的启动模式, 在activity节点里指定launchMode的属性.
standard 标准模式(activity的默认模式), 导致上面的问题出现.
singleTop 单一顶部模式: 如果一个activity的实例已经存在当前任务栈的栈顶, 系统会发送一个Intent给那个实例的onNewIntent方法. 应用场景: 防止别的程序恶意打开我们的页面.
singleTask 单一任务栈模式: 如果activity的实例已经存在任务栈中, 系统就不会创建一个新的实例, 而是调用那个实例的onNewIntent方法, 并且把那个已经存在的activity 实例以上所有的activity给清除出栈, 把自己变成栈顶的效果. 应用场景: 商品列表 -> 商品详情 -> 图片详情 -> 大图查看 想从大图查看立刻回到商品列表, 并且把后面开启的三个页面关闭时.
singleInstance 单一实例模式: 系统会创建一个新的任务栈把activity的实例放在新的任务栈的栈顶(栈底), 其他的activity页面不会在这个任务栈中创建实例. 如果activity的实例已经存在, 系统会调用那个实例的onNewIntent方法. 应用场景: 在整个系统中只需要初始化一次的界面.
相关文章推荐
- 安卓四大组件之一Activity的生命周期
- 安卓四大组件之activity
- 安卓四大组件之activity笔记
- 安卓四大组件之一————————Activity
- 安卓四大组件-Activity
- 安卓四大组件总结之activity
- 安卓四大组件之Activity
- 安卓四大核心组件之Activity
- 安卓四大组件之Activity-生命周期
- 安卓四大核心组件之Activity
- 安卓四大组件之Activity
- 安卓四大组件之activity
- 安卓中四大组件之——Activity
- 安卓四大组件 之 Activity
- 安卓面试宝典 - 第一篇 安卓四大组件Activity的生命周期
- 安卓四大组件 之 Activity 之 任务栈和回收栈(Tasks and Back Stack)
- 安卓四大组件之一 -------------------Activity_生命周期
- 安卓开发.四大组件.activity.1
- 安卓入门---四大组件---Activity
- 初学浅谈安卓四大组件之一:Activity