第五章 全局大喇叭-详解广播机制 主讲:王海
第五章 全局大喇叭--详解广播机制 主讲:王海
本章目标 掌握Activity的创建及生命周期方法 。 能够访问Android中的各种资源 理解AndroidManifest.xml清单文件 掌握Android应用程序生命周期 掌握Application类及生命周期事件 Android软件开发 主讲:王海
Android软件开发 主讲:王海 本章目标 • 掌握Activity的创建及生命周期方法 • 能够访问Android中的各种资源 • 理解AndroidManifest.xml清单文件 • 掌握Android应用程序生命周期 • 掌握Application类及生命周期事件
Intent原理及分类 Intent是Android应用内不同组件之间的通讯载体 使用Intenti可以激活Android的三个核心组件: Activity Activity_1 Service Service Intent Activity_2 BroadcastReceiver Broadcast Receiver Android软件开发 主讲:王海
Android软件开发 主讲:王海 Intent原理及分类 • Intent是Android应用内不同组件之间的通讯载体 • 使用Intent可以激活Android的三个核心组件: – Activity – Service – BroadcastReceiver Activity_1 Intent Broadcast Receiver Service Activity_2
使用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)方法,其中Intent参数用于封装目标Service所 需信息 。触发BroadcastReceiver时,调用sendBroadcast(Intent intent)方法来发送广播信息,其中 Intent参数用于封装目标BroadcastReceiver所需信息 Android软件开发 主讲:王海
Android软件开发 主讲:王海 使用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)方法,其中Intent参数用于封装目标Service所 需信息 • 触发BroadcastReceiver时,调用sendBroadcast(Intent intent)方法来发送广播信息,其中 Intent参数用于封装目标BroadcastReceiver所需信息
Intentz意图类 。显式Intent-f 明确指定需要启动或触发组件的类名 ·隐式Intent-一指定了需要启动或触发的组件应满足的条件 Android软件开发 主讲:王海
Android软件开发 主讲:王海 Intent意图类 • 显式Intent——明确指定需要启动或触发组件的类名 • 隐式Intent——指定了需要启动或触发的组件应满足的条件
Intent/属性 Component组件 ·Action动作 Category类别 Data数据 Type数据类型 Extras扩展信息 Flags标志位 Android软件开发 主讲:王海
Android软件开发 主讲:王海 Intent属性 • Component组件 • Action动作 • Category类别 • Data数据 • Type数据类型 • Extras扩展信息 • Flags标志位
Component:组件 Component组件为目标组件,需要接受一个ComponentName对象 ComponentName对象的构造方法有以下几种方式: ComponentName(String pkg,String className) ComponentName(Contextcontext,String className) ComponentName(Context context,ClassclassName) ·Intenti还可以指定待启动组件的包名和类名: setClass(Context ctx,Classcls) setClassName(Context ctx,String className) setClassName(String pkg,String className) Android软件开发 主讲:王海
Android软件开发 主讲:王海 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 ctx,String className) setClassName(String pkg,String className)
Component组件 创建ComponentName对象 Intentintent =new Intent(); ComponentName component new ComponentName (MainActivity.this SecondActivity.class); intent.setComponent (component); startActivity(intent); 使用setClass((O方法指定待启动组件 Intent intent new Intent () intent.setclass (MainActivity.this SecondActivity.class startActivity(intent); Context>对象 Class对象 使用Intent(O构造方法指定启动组件 Intent intent new Intent(MainActivity.this,SecondActivity.class); startActivity(intent);
• 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,SecondActivity.class); startActivity(intent); Context对象 Class对象 • Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent);
Action动作 Action是一个字符串,用于描述一个Android应用程序的组件 启动Activity的系统标准Action Action:常量 字符串 描述 ACTION_SEND android.intent.action.SEND 启动一个Activity,该Activity会发送Intent中指 定的数据。接收人需要由解析的Activity:来选择。 ACTION SENDTO android.intent.action.SENDTO 启动一个Activity来向Intent的数据URI所指定的 联系人发送一条消息。 ACTION ANSWER android.intent.action.ANSWER 打开一个处理来电的Activity,通常这个动作是由 本地电话拨号程序处理 打开一个子Activity能在Intent的数据URI指定的 ACTION INSERT android.intent.action.INSERT 游标处插入新项的Activity。当作为子Activityi调 用时,应该返回一个指向新插入项的URI ACTION_DELETE android.intent.action.DELETE 启动一个Activity,允许删除Intent的数据URI中 指定的数据 ACTION_ALL_APPS android.intent.action.ACTION_ALL_APPS 打开一个列出所有已安装应用程序的Activity,通 常此操作由启动器处理 ACTION_SEARCH android.intent.action.SEARCH 通常用于启动特定的搜索Activity。 件王海
Android软件开发 主讲:王海 Action动作 • Action是一个字符串,用于描述一个Android应用程序的组件 • 启动Activity的系统标准Action Action常量 字符串 描述 ACTION_MAIN android.intent.action.MAIN 应用程序入口 ACTION_VIEW android.intent.action.VIEW 最常见的动作;视图要求以最合理的方式查看 Intent的URI中所提供的数据。不同的应用程序 将会根据URI模式来处理视图请求。 ACTION_EDIT android.intent.action.EDIT 请求一个Activity,要求该Activity可以编辑 Intent的数据URI中的数据 ACTION_PICK android.intent.action.PICK 启动一个子Activity,可以从Intent的数据URI 指定的ContentProvider中选择一个项。当关 闭的时候,返回所选择的项的URI。 ACTION_DIAL android.intent.action.DIAL 打开一个拨号程序,要拨打的号码由Intent的 数据URI预先提供。 ACTION_CALL android.intent.action.CALL 打开一个电话拨号程序,并立即使用Intent的 数据URI所提供的号码拨打一个电话,此动作只 应用于代替本地电话的Activity Action常量 字符串 描述 ACTION_SEND android.intent.action.SEND 启动一个Activity,该Activity会发送Intent中指 定的数据。接收人需要由解析的Activity来选择。 ACTION_SENDTO android.intent.action.SENDTO 启动一个Activity来向Intent的数据URI所指定的 联系人发送一条消息。 ACTION_ANSWER android.intent.action.ANSWER 打开一个处理来电的Activity,通常这个动作是由 本地电话拨号程序处理 ACTION_INSERT android.intent.action.INSERT 打开一个子Activity能在Intent的数据URI指定的 游标处插入新项的Activity。当作为子Activity调 用时,应该返回一个指向新插入项的URI ACTION_DELETE android.intent.action.DELETE 启动一个Activity,允许删除Intent的数据URI中 指定的数据 ACTION_ALL_APPS android.intent.action. ACTION_ALL_APPS 打开一个列出所有已安装应用程序的Activity,通 常此操作由启动器处理 ACTION_SEARCH android.intent.action.SEARCH 通常用于启动特定的搜索Activity
标准Action常量 -ACTION BOOT COMPLETED:系统启动完成广播 -ACTION_TIME_CHANGED:时间改变广播 -ACTION DATE CHANGED:日期改变广播 -ACTION_TIME_TICK:每分钟改变一次时间 -ACTION_TIMEZONE_CHANGED:时区改变广播 -ACTION_BATTERY_LOW:电量低广播 -ACTION_PACKAGE ADDED:添加包广播 -ACTION_PACKAGE_REMOVED:删除包广播 Android软件开发 主讲:王海
Android软件开发 主讲:王海 标准Action常量 – ACTION_BOOT_COMPLETED:系统启动完成广播 – ACTION_TIME_CHANGED:时间改变广播 – ACTION_DATE_CHANGED:日期改变广播 – ACTION_TIME_TICK:每分钟改变一次时间 – ACTION_TIMEZONE_CHANGED:时区改变广播 – ACTION_BATTERY_LOW:电量低广播 – ACTION_PACKAGE_ADDED:添加包广播 – ACTION_PACKAGE_REMOVED:删除包广播