Android Activity总结
来源:互联网 发布:剑三藏剑成女捏脸数据 编辑:程序博客网 时间:2024/06/07 17:39
Android Activity基础知识:
1. 生命周期
Dialog、PopupWindow、Toast遮盖不会触发生命周期方法
2. 启动模式
launchMode一共有4种:
standard: 每次创建一个新的Activity
singleTop: 当前Activity是否在栈顶,如果不是栈顶就重新创建一个,否则无需创建
singleTask:所有Task仅一个,杀死上面所有Activity
singleInstance:单独一个新Task,且仅有一个Activity
3. 状态保存于恢复
4. 启动方式
5. Activity、Window、View之间的关系
Activity -(attach new Window)- PhoneWidow -(setContentView)- View
为什么要有Window?提供多层窗口?
6.
ServiceManager.get("Activity");
ActivityManagerNative.getDefault();
Activity通常是学习Android写demo时遇到的第一个类,知名程度可以与经典的打印“Hello World”相媲美,毕竟在Android中即使想在界面上显示一个“Hello World”,也必须先创建Activiy子类在其onCreate方法中创建视图,在视图上添加文字“Hello World”。哈哈,接下来就来看看Android 的四大组件使用频率最高的Activity吧。
一、Activity是什么?
二、Activity的生命周期
http://developer.android.com/training/basics/activity-lifecycle/index.html
Starting an Activity
http://developer.android.com/training/basics/activity-lifecycle/starting.html
Pausing and Resuming an Activity
http://developer.android.com/training/basics/activity-lifecycle/pausing.html
Stopping and Restarting an Activity
http://developer.android.com/training/basics/activity-lifecycle/stopping.html
Recreating an Activity
http://developer.android.com/training/basics/activity-lifecycle/recreating.html
三、状态保存和恢复
oncreate(Bundle) - 官方推荐
四、启动方式
一个Activity打开另外一个Activity整体有两种启动方式:显示启动、隐式启动1. 显示启动
// 第一种显示启动方式Intent intent = new Intent(ThisActivity.this, OtherActivity.class);startActivity(intent);// 第二种显示启动方式Intent intent = new Intent();intent.setClass(ThisActivity.this, OtherActivity.class);startActivity(intent);// 第三种显示启动方式Intent intent = new Intent();ComponentName component = new ComponentName(ThisActivity.this, OtherActivity.class);intent.setComponent( component );startActivityForResult(intent, 10);
主要用于应用内启动其他Activity
2. 隐式启动
Uri uri = Uri.parse("http://www.google.com"); Intent intent = new Intent(Intent.ACTION_VIEW,uri);startActivity(intent);
例子是打开Android设备的浏览器并打开gogole主页。
隐式启动可以应用内启动其他Activity,主要用于启动其他应用程序
支持返回的启动方式
以上都是使用startActivity方法,目的用于一个Activity启动两外一个,但是如果启动新Activity还想要其返回一个值该如何处理呢?Android针对需要返回值的情况提供了startActivityForResult方法:// 第一个Activity打开另外一个 Intent intent = new Intent(ThisActivity.this, OtherActivity.class); startActivityForResult(intent, 10);
// 第二个activity通过setResult返回一个值并关闭当前ActivitysetResult(88);finish();
// 第一个Activity覆写如下方法接收数据@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == 88) { Toast.makeText(this, "从Third返回", resultCode ).show(); }}
四、Activity之间传值
主要通过Intent类进行传值,主要使用intent的Extras,内容原理是使用Map键值对保存数据intent 传递数组、自定义对象等
五、参考资料:
官方文档 - Interacting with Other Appshttp://developer.android.com/training/basics/intents/index.html
列出所有Android支持的启动方式(例如打电话) - Intent类
http://developer.android.com/reference/android/content/Intent.html
如果在官方提供的没有自己想要的,可以看下开源Intent库 - openintents
https://code.google.com/p/openintents/wiki/OpenIntents
Note: 问题记录
1. 如果传递的是TreeMap,接收到的是HahsMap
putExtra treeMap returns HashMap cannot be cast to TreeMap android
http://stackoverflow.com/questions/13960153/putextra-treemap-returns-hashmap-cannot-be-cast-to-treemap-android
2013-12-29 更新Parcelable
2014-11-04 更新问题记录
- Android Activity生命周期总结
- Android Activity总结
- Android Activity总结
- Android Activity总结
- Android基础:总结Activity
- android--activity总结
- Android Activity总结
- Android之activity总结
- Android之activity总结
- android的activity总结
- Android之activity总结
- Android Activity回穿值总结
- Android Activity总结
- Android Activity 总结
- Android之activity总结
- android activity知识总结
- android Activity 全面总结
- android知识总结--Activity
- PHP 和 AJAX XML 实例
- Hibernate的事件机制
- 除了花生壳,还有每步、nat123端口映射等不少可以选择的
- 浏览器版本识别(备忘)
- HDU:1394 Minimum Inversion Number
- Android Activity总结
- OC基本功(二)使用宏在程序中加入测试代码
- 聊聊JVM的年轻代
- Tomcat 学习进阶历程之http协议
- HDU 1029
- 兰姆达表达式Lambda 表达式(C# 编程指南)
- 学习笔记 android fragment
- 45度角地图坐标计算
- POJ 1201 差分约束