《华联学院《android软件开发》课件05全局大喇叭--详解广播机制》由会员分享,可在线阅读,更多相关《华联学院《android软件开发》课件05全局大喇叭--详解广播机制(37页珍藏版)》请在金锄头文库上搜索。
1、第五章全局大喇叭-详解广播机制Android软件开发主讲:王海本章目标掌握Activity的创建及生命周期方法能够访问Android中的各种资源理解AndroidManifest.xml清单文件掌握Android应用程序生命周期掌握Application类及生命周期事件Android软件开发主讲:王海Intent原理及分类Intent是Android应用内不同组件之间的通讯载体使用Intent可以激活Android的三个核心组件: Activity Service BroadcastReceiverActivity_1IntentBroadcastReceiverServiceActivity
2、_2Android软件开发主讲:王海使用Intent启动Activity、Service和BroadcastReceiver三大组件启动Activity:通常需要调用startActivity(Intent intent)或startActivityForResult(Intent intent,int requestCode)方法,其中Intent参数用于封装目标Activity所需信息启动Service:通常需要调用startService(Intent intent)或bindService(Intent intent,ServiceConnection conn ,int flags)
3、方法,其中Intent参数用于封装目标Service所需信息触发BroadcastReceiver时,调用sendBroadcast(Intent intent)方法来发送广播信息,其中Intent参数用于封装目标BroadcastReceiver所需信息Android软件开发主讲:王海Intent意图类 显式Intent明确指定需要启动或触发组件的类名 隐式Intent指定了需要启动或触发的组件应满足的条件Android软件开发主讲:王海Intent属性Component组件Action动作Category类别Data数据Type数据类型Extras扩展信息Flags标志位Android软件
4、开发主讲:王海Component组件Component组件为目标组件,需要接受一个ComponentName对象ComponentName对象的构造方法有以下几种方式: ComponentName(String pkg,String className) ComponentName(Context context,String className) ComponentName(Context context,Class className)Intent还可以指定待启动组件的包名和类名: setClass(Context ctx,Class cls) setClassName(Context c
5、tx,String className) setClassName(String pkg,String className)Intent intent =new Intent();ComponentName component = new ComponentName(MainActivity.this,SecondActivity.class);intent.setComponent(component);startActivity(intent);Intent intent = new Intent();intent.setClass(MainActivity.this,SecondActi
6、vity.class); startActivity(intent);Context对象Class对象Intent intent = new Intent(MainActivity.this,SecondActivity.class);startActivity(intent);Android软件开发主讲:王海Action动作Action是一个字符串,用于描述一个Android应用程序的组件启动Activity的系统标准ActionAction常量字符串描述ACTION_MAINandroid.intent.action.MAIN应用程序入口ACTION_VIEWandroid.intent.
7、action.VIEW最常见的动作;视图要求以最合理的方式查看Intent的URI中所提供的数据。不同的应用程序将会根据URI模式来处理视图请求。ACTION_EDITandroid.intent.action.EDIT请求一个Activity,要求该Activity可以编辑Intent的数据URI中的数据ACTION_PICKandroid.intent.action.PICK启动一个子Activity,可以从Intent的数据URI指定的ContentProvider中选择一个项。当关闭的时候,返回所选择的项的URI。ACTION_DIALandroid.intent.action.DIA
8、L打开一个拨号程序,要拨打的号码由Intent的数据URI预先提供。ACTION_CALLandroid.intent.action.CALL打开一个电话拨号程序,并立即使用Intent的数据URI所提供的号码拨打一个电话,此动作只应用于代替本地电话的ActivityAction常量字符串描述ACTION_SENDandroid.intent.action.SEND启动一个Activity,该Activity会发送Intent中指定的数据。接收人需要由解析的Activity来选择。ACTION_SENDTOandroid.intent.action.SENDTO启动一个Activity来向In
9、tent的数据URI所指定的联系人发送一条消息。ACTION_ANSWERandroid.intent.action.ANSWER打开一个处理来电的Activity,通常这个动作是由本地电话拨号程序处理ACTION_INSERTandroid.intent.action.INSERT打开一个子Activity能在Intent的数据URI指定的游标处插入新项的Activity。当作为子Activity调用时,应该返回一个指向新插入项的URIACTION_DELETEandroid.intent.action.DELETE启动一个Activity,允许删除Intent的数据URI中指定的数据ACT
10、ION_ALL_APPSandroid.intent.action. ACTION_ALL_APPS打开一个列出所有已安装应用程序的Activity,通常此操作由启动器处理ACTION_SEARCHandroid.intent.action.SEARCH通常用于启动特定的搜索Activity。Android软件开发主讲:王海标准Action常量 ACTION_BOOT_COMPLETED:系统启动完成广播 ACTION_TIME_CHANGED:时间改变广播 ACTION_DATE_CHANGED:日期改变广播 ACTION_TIME_TICK:每分钟改变一次时间 ACTION_TIMEZON
11、E_CHANGED:时区改变广播 ACTION_BATTERY_LOW:电量低广播 ACTION_PACKAGE_ADDED:添加包广播 ACTION_PACKAGE_REMOVED:删除包广播Android软件开发主讲:王海Category类别Category属性用来描述动作的类别Category常量字符串描述CATEGORY_DEFAULTandroid.intent.category.DEFAULT默认的CategoryCATEGORY_BROWSABLEandroid.intent.category.BROWSABLE指定Activity能被浏览器安全调用CATEGORY_TABand
12、roid.intent.category.TAB指定Activity能作为TabActivity的Tab页CATEGORY_LAUNCHERandroid.intent.category.LAUNCHERActivity显示顶级程序列表中CATEGORY_INFOandroid.intent.category.INFO用于提供包信息CATEGORY_HOMEandroid.intent.category.HOME设置该Activity随系统启动而运行CATEGORY_PREFERENCEandroid.intent.category.PREFERENCE该Activity是参数面板CATEGO
13、RY_TESTandroid.intent.category.TEST该Activity是一个测试CATEGORY_CAR_DOCKandroid.intent.category.ANSWER指定手机被插入汽车底座时运行该ActivityCATEGORY_DESK_DOCKandroid.intent.category.CAR_DOCK指定手机被插入桌面底座时运行该ActivityCATEGORY_CAR_MODEandroid.intent.category.CAR_MODE设置该Activity可以在车载环境下使用Android软件开发主讲:王海Data数据Data属性通常用与Action
14、属性结合使用为Intent提供可操作的数据Data属性接收URI对象 【语法】 【示例】URI字符串scheme:/host:port/pathhttp:/Android软件开发主讲:王海Type数据类型 Data属性与Type属性之间能够相互覆盖: 如果为Intent先设置Data属性,再设置Type属性,那么Type属性将会覆盖Data属性 如果为Intent先设置Type属性,再设置Data属性,那么Data属性将会覆盖Type属性 如果希望Intent既有Data属性也有Type属性,应该调用Intent的setDataAndType()方法Android软件开发主讲:王海Extras
15、扩展信息Extras属性是一个Bundle对象用于在多个Activity之间交换数据Extras属性的使用过程 使用Extras属性 通过getExtras()方法获得Bundle对象并进行取值Bundle bundle= new Bundle();bundle.putString(test, this is a test);Intent intent = new Intent(MainActivity.this,SecondActivity.class);intent.putExtras(bundle);startActivity(intent);Bundle bundle = this.g
16、etIntent().getExtras();String test = bundle.getString(test);Android软件开发主讲:王海Flags标志位 Flag属性用于为Intent添加额外的控制标志 通过Intent的addFlags()方法为Intent添加控制标志 常用的Flag值: FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NO_HISTORY FLAG_ACTIVITY_SINGLE_TOPAndroid软件开发主讲:王海使用Intent启动Activity通过调用Context的startActivity()方法可以创建并显示目标ActivitystartActivity(myIntent);startActivity()方法会查找并启动一个与Intent参数相匹配的ActivitystartActivityForResult()方法启动Activity并跟踪子Activity的反馈Android软件开发主讲:王海显式Intent启动Activity通过Intent来显式地指定