android基础之三——android中的意图及启动模式
来源:互联网 发布:天圆地方软件 编辑:程序博客网 时间:2024/06/04 01:25
01_AndroidManifest文件中的几个细节
每个activity就是一个界面。 结论: 1、一个应用程序可以创建多个桌面图标: 创建桌面图标的方法: <intent-filter> //应用程序的入口 <action android:name="android.intent.action.MAIN" /> //启动器 <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> 2、activity节点中的label标签的值是界面的标题; 3、application节点中的label标签的是应用程序的名称,可以应用程序管理列表中看到; 4、application节点中的label标签和activity节点中的label标签不是一个概念;
02_意图设置动作激活新的界面(重点)
从A界面跳转到B界面;
aciton:动作 可以自定义,也可以使用系统定义好的; category:类型,lancher启动器,car_dock\car_mode车载电脑模式,default默认, 我们开发的activity通常都是default类型。 Intent:意图。做一件事情的想法就是意图。 intent的作用:激活组件,携带参数。 意图:动作、数据;
开启activity的步骤:
//创建一个intent Intent intent = new Intent(); //设置动作 intent.setAction("android.intent.action.SHOWSECOND"); //设置数据 intent.setData(Uri.parse("itheima://110")); //设置类型 intent.addCategory("android.intent.category.DEFAULT"); //开启activity 界面 //根据intent设置的属性在清单文件中与activity的intent-filter中设置的数据去匹配 startActivity(intent);
03_意图设计的目的
架构师、构架师:多快好省的完成一个项目.代码重复利用。高内聚、低耦合:模块之间可以独立运行、又可以相互调用;
04_隐式意图和显式意图(重点)
- 隐式意图:开启activity时候没有直接指定目标Activity的名称,通过指定一组动作、数据、类型让系统自动去配置文件中匹配目标activity。
应用场景:开启别应用程序的activty。 缺点: 开启activity时需要匹配配置文件中的activity,耗费时间。
显式意图:开启activity时候直接指定目标Activity的名称.比较快。
应用场景:限于应用程序内部调用activity。
隐式意图:
//创建一个intent Intent intent = new Intent(); //设置动作 intent.setAction("android.intent.action.SHOWSECOND"); //设置数据 intent.setData(Uri.parse("itheima://110")); //设置类型 intent.addCategory("android.intent.category.DEFAULT"); //开启activity 界面 //根据intent设置的属性在清单文件中与activity的intent-filter中设置的数据去匹配 startActivity(intent);
创建显示意图
Intent intent = new Intent(this, SecondActivity.class);startActivity(intent);
05_意图传递数据(重点)
使用intent传递数据,调用putExtra、putExtras方法;
可以传递的数据类型:
8大基本数据类型、数组;Bundle 类似于map的数据结构pacelable 序列化到内存中;serializable 序列化到文件中;
传递参数代码:
//创建显示意图Intent intent = new Intent(this, SecondActivity.class);//传递参数//intent.putExtra("ask", "学挖掘机哪家强"); Bundle b = new Bundle(); b.putString("answer", "中国山东找蓝翔"); intent.putExtra("params", b);
接收参数代码:
Intent intent = getIntent();//String ask = intent.getStringExtra("ask");Bundle b = intent.getBundleExtra("params");String answer = b.getString("answer");
06_URI详解
<data android:scheme="http" android:host="www.baidu.com" android:port="80" android:path="/image/1.jpg" />http://www.baidu.com/image/1.jpg
07_开启activity获取返回值(重点)
从A界面跳转到B界面,当B界面关闭的时候,返回一些数据给A界面。
步骤:
1、在A界面上开启B界面,调用的方法是startActivityForResult;
//开启一个activity并期待返回数据 startActivityForResult(intent, 0);
2、关闭B界面,关闭之前设置返回的数据;
//设置返回数据 Intent data = new Intent(); data.putExtra("answer", "中国山东找蓝翔"); setResult(100, data); //关闭当前界面 finish();
3、在A界面开启一个方法接收B界面返回的数据;
/** * 接收目标activity返回的数据 */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { String answer = data.getStringExtra("answer"); Toast.makeText(this, answer, 0).show();}
08_请求码和结果码的作用(重点)
作用:用来判断是哪个业务逻辑界面返回的数据;代码: /** * 接收目标activity返回的数据 * requestCode 请求码,在开启activity设置的 * resultCode 结果码,设置返回数据时设置的 * */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { String result = data.getStringExtra("result"); if(requestCode == 0){ Toast.makeText(this, "第二个界面返回的数据:"+result, 0).show(); } if(requestCode == 1){ Toast.makeText(this, "第三个界面返回的数据:"+result, 0).show(); }}
09_activity的生命周期(重点)
打开一个界面:
onCreate 初始化activityonStart 开始activityonResume 暂停之后继续工作(缓冲)
关闭一个界面:
onPause 暂停每个任务onStop 停止activity工作onDestroy 销毁activity实例
最小化一个界面:
onPause 暂停每个任务onStop 停止activity工作
最小化一个界面后重新打开:
onRestart 重新打开一个activityonStart 开始activityonResume 暂停之后继续工作(缓冲)
10_读文档查看activity的生命周期
11_横竖屏切换的生命周期(重点)
横竖屏切换时:先销毁前一个activity的实例对象,重新创建一个新的activity实例;landscape横屏、portrait竖屏、sensor传感器类型;禁用横竖屏: android:configChanges="orientation|keyboardHidden|screenSize";
12_任务栈的概念
队列:先进先出; 栈:先进后出; 任务:一个activity的实例(Task); 每打开一个界面代表有一个任务入栈; 每关闭一个界面代表有一个任务出栈; 当任务栈清空的时候代表应用程序退出了; 设计任务栈的目的:维护界面打开、关闭之间的关系的;
启动模式:
standar:标准模式,没打开一个界面都会创建一个实例放入任务栈中;singleTop:单一顶部模式,
13_singletop启动模式
singletop 单一顶部模式 在activity的配置文件中设置android:launchMode="singleTop"如果任务栈的栈顶存在这个要开启的activity,不会重新的创建activity,而是复用已经存在的activity。保证栈顶如果存在,不会重复创建。应用场景:浏览器的书签
14_singletask和singleinstance启动模式
singetask 单一任务栈,在当前任务栈里面只能有一个实例存在当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,如果有实例存在就复用这个已经存在的activity,并且把这个activity上面的所有的别的activity都清空,复用这个已经存在的activity。保证整个任务栈里面只有一个实例存在应用场景:浏览器的activity如果一个activity的创建需要占用大量的系统资源(cpu,内存)一般配置这个activity为singletask的启动模式。webkit内核 c代码singleInstance启动模式非常特殊, activity会运行在自己的任务栈里面,并且这个任务栈里面只有一个实例存在如果你要保证一个activity在整个手机操作系统里面只有一个实例存在,使用singleInstance应用场景: 电话拨打界面
帧动画(重点)
帧动画:有一组有序的图片,一帧一帧地显示这些图片;代码: iv = (ImageView) findViewById(R.id.iv); //添加ImageView的背景资源 iv.setBackgroundResource(R.drawable.girl); //加载动画资源 AnimationDrawable ad = (AnimationDrawable) iv.getBackground(); ad.start();
0 0
- android基础之三——android中的意图及启动模式
- Android四大组件——Activity生命周期、启动模式、显隐式意图、杀死进程、杀死所有Activity、安装及反编译
- android 中的意图intent
- android之意图
- Android之意图
- Android 启动模式之三 singleTask
- Android基础之Activity四大启动模式
- Android基础之Activity启动模式
- Android之Activity生命周期及启动模式
- android基础--意图的学习
- Android基础 | 意图Intent讲解
- [Android基础]Android之android:launchMode(Activity启动模式)
- Android深入探究笔记之三 -- Intent (隐式意图和显示意图)
- Android基础篇之Activity(三) - Activity的Task和启动模式
- 浅析Android中的Intent(意图)
- Android中的Intent意图安全
- android中的启动模式
- Android—启动模式
- C#ArrayList集合
- Sublime Text3 3103 注册码
- 内存分配学习(一)-- 实现一个malloc
- 【构建Android缓存模块】(一)吐槽与原理分析
- GDKOI2016 爆零记
- android基础之三——android中的意图及启动模式
- BZOJ_P2431 [HAOI2009]逆序对数列(动态规划)
- Eclipse自动打包教程
- android基础之四——广播与服务(一)
- 评教上线设想
- 15. 3Sum
- 集训队专题(6)1001 Air Raid
- jQuery中的DOM操作
- The mook jong (HDU 5366)