《Android 开发艺术探索》随手笔记——第一章Activity生命周期和启动模式
来源:互联网 发布:ubuntu下载qq 编辑:程序博客网 时间:2024/05/21 12:48
IntentFilter 匹配规则
Action匹配:
1> Intent 中必须至少有一个action,否则无法发起隐式Intent请求,报错。
2> 一个intent-filter中可以有多个action
3>action 区分字母大小写
详细说明:
intent中可以只有一个action,intent-filter中可以有一个,也可以有多个。只要intent的action在filter中就能匹配成功。
intent 也可以包含多个action,如果要匹配成功。这些action,必须全部在intent-filter中 。即intent =< intent-filter(所有的action都必须在intent-filter中找到。intent-filter 的action 包含所有 intent 中的action)
intent中至少有一个action,因为 intent =< intent-filter , 经过测试,intent 没有action,不论intent-filter中没有action还是只有一个action。都会报错。所以,至少intent 和 intent-filter 都至少有一个action。
Intent启动的两种写法
一、
Intent intent = new Intent("com.ryg.charpter_1.c"); startActivity(intent);
二、
Intent intent = new Intent(); intent.setAction("com.ryg.charpter_1.c"); intent.setAction("com.ryg.charpter_1.d"); startActivity(intent);
注意是setAction 不是addAction。
Intent-Filter 的注册方法静态和动态,比如广播接收器
静态:
<!--广播注册--> <receiver android:name=".SmsBroadCastReceiver"> <intent-filter android:priority="20"> <action android:name="com.ryg.charpter_1.c<span style="font-family: Arial, Helvetica, sans-serif;">"/> </span> </intent-filter> </receiver>动态:
//初始化广播private void initBroadCast(){localBroadcastManager = LocalBroadcastManager.getInstance(mContext);IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(SIGNUP_SUCCESS_TO_LOGIN_ACTION);//可以增加多个actionbroadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String login_code = intent.getStringExtra("login_code");vUserNameEditText.setText(login_code);vPasswordEditText.requestFocus();}};localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter);}
Category匹配规则
1>Intent 中不管有几个category,每个category都必须在intent-filter 过滤器中找到。即 Intent =< Intent-filter
2> Intent中可以不包含任何category,这是因为,Intent启动时,startActivity 和startActivityForResult ,系统会自动增加一个category:android.intent.category.DEFAULT
3> 自定义Intent-Filter 必须包含
<category android:name="android.intent.category.DEFAULT" />
data 结构:
data由两部分组成,mimeType 和URI 。mimeType 指媒体类型,比如 image/jpeg 、audio/mpeg4-generic 和 video/* 等。可以表示图片、文本、视频等不同的媒体格式。
URI 结构:
<scheme>://<host>:<port>/[<path> | <pathPrefix> | <pathPattern>]
比如:
content://com.example.project:200/folder/subfolder/etc
http://www.baidu.com:80/search/info
如果URI中没有指定scheme和host 那么整个URI 是无效的。
过滤器中没有指定URI ,但是有默认值,URI的默认值为content 和 file 。
* 如果intent指定了完整的data,必须调用setDataAndType方法,不能先调用setData,再调用setType。因为这两个方法彼此会清除对方的值,看Android源码就能理解。
1、匹配规则与action类似,只要有一个data匹配就可以。 也是 intent =< intent-filter 但是有点不同。就是intent 和 intent-filter 中都同时没有data。就是隐式匹配中没有data的匹配。
2、如果 intent-filter中 定义了data 过滤器,那么intent中必须含有data,并且至少一个data,并且要匹配data过滤器中的某一个data。
- 《Android 开发艺术探索》随手笔记——第一章Activity生命周期和启动模式
- Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式
- 《Android开发艺术探索》笔记 — Activity的生命周期和启动模式
- 第一章Activity的生命周期和启动模式(Android开发艺术探索)
- Activity生命周期和启动模式 - Android开发艺术探索读书笔记(第一章)
- Activity的生命周期和启动模式-Android开发艺术探索读书笔记第一章
- Android开发艺术探索读书笔记 第一章 Activity的生命周期和启动模式
- Android 艺术开发探索 第一章 Activity 的生命周期和启动模式观后感
- 《Android开发艺术探索》读书笔记-第一章 Activity的生命周期和启动模式
- Android开发艺术-第一章Activity的生命周期和启动模式
- Android开发艺术探索--Activity生命周期和启动模式
- 《Android开发艺术探索》读书笔记——Activity的生命周期和启动模式
- 《Android开发艺术探索》笔记之Activity的生命周期和启动模式
- 《Android开发艺术探索》之学习笔记(一)Activity的生命周期和启动模式
- Android开发艺术探索笔记(一) Activity的生命周期和启动模式(1)
- Android开发艺术探索阅读笔记之一:Activity的生命周期和启动模式
- 【Android开发艺术探索读书笔记】 第一章 Activity的生命周期与启动模式
- Android开发艺术探索学习笔记1——Avtivity生命周期和启动模式
- 高斯消元模板
- 2、linux驱动的基本模块--(非必要的)
- 关于HTTP流重复读取
- c#datagridview
- 1. Two Sum
- 《Android 开发艺术探索》随手笔记——第一章Activity生命周期和启动模式
- 类库常用方法
- CSS3实用多级下拉菜单
- 自己对面向对象开发的理解
- 一个死锁导致 UI 假死的例子
- java中数据类型的默认值和取值范围
- js实现选项卡的切换
- 谈谈如何学习Linux内核
- C++Primer中文(第五版)习题答案(英文)