Intent和Broadcast
11.1Intent
Intent是一次即将执行操作的抽象描述。实现策略有3种:
通过startActivity()启动Intent;
通过Broadcast Intent将一个Intent发给任何对这个Intent感兴趣的BroadcastReceiver;
通过startService(Intent)或bindService(Intent, ServiceConnection, int)和后台的Service交互。
第一种方式
Intent最常用的用途是链接一个应用中各个Activity
启动特定的Activity:
Intent intent= new Intent(A.this, B.class);
startActivity(intent);
启动未定的Activity:
不关心启动哪个Activity,只将启动的Activity的描述信息放到Intent中,让系统寻找合适的Activity来启动。
Intent intent= new Intent(Intent.参数,”描述信息”);
startActivity(intent);
处理Activity的返回值
StartActivityForResult()启动一个Activity,新的Activity执行完毕后(setResult(),finish()),原Activity执行回调函数onActivityResult(),系统自动调用该方法。
一个Intent里边包含的内容有:
对执行动作的描述Action;
动作相关的数据Data;
数据类型type;
执行动作附加信息的描述:类别category;
附加信息的描述:extras
目标组件的描述:component
系统自定义的Action常见的有:ACTION_MAIN(标记为应用程序的入口)、ACTION_VIEW(显示给用户)、ACTION_DIAL(打电话)、ACTION_PICK(数据选择)、ACTION_EDIT(编辑数据)、ACTION_DELETE(删除数据)。
Android用指向数据的URL来表示数据data。
11.2Broadcast
Intent还可以作为不同进程间传递数据的媒介。
广播Broadcast方法:
New Intent后,设置sendBroadcast(intent);
BroadcastReceiver来接受广播的Intent,需要设置Intent Filter制定对哪些Intent监听。
需要继承BroadcastReceiver,实现onReceive接口。
注册的BroadcastReceiver并非一直在后台运行,而是事件或相关的Intent来临时才被系统调用。
BroadcastReceiver的注册:
1.在AndroidManifest.xml中进行轻量级注册。
<receiver android:name=”类名”>
<intent-filter>
<action android:name=”接受谁的广播Intent的绝对路径名”>
</intent-filter>
</receiver>
2.在代码中注册
New好BroadcastReceiver和Intent Filter后,调用registerReceiver()实现。
unRegisterReceiver()注销注册的BroadcastReceiver