Bootstrap

Android 常用的三大组件

一、Broadcast Receiver组件

Android中的广播事件有两种,一种就是系统广播事件,另一种是我们自定义的广播事件。

广播事件的流程

①注册广播事件:注册方式有两种,一种是静态注册,就是在AndroidManifest.xml文件中定义,注册的广播接收器必须要继承BroadcastReceiver;另一种是动态注册,是在程序中使用Context.registerReceiver注册,注册的广播接收器相当于一个匿名类。两种方式都需要IntentFIlter。

②发送广播事件:通过Context.sendBroadcast来发送,由Intent来传递注册时用到的Action。

③接收广播事件:当发送的广播被接收器监听到后,会调用它的onReceive()方法,并将包含消息的Intent对象传给它。onReceive中代码的执行时间不要超过5s,否则Android会弹出超时dialog。

静态注册方式:
1、静态注册方式在AndroidManifest.xml文件中

	<!-- 注册自定义静态广播接收器 -->
	<receiver android:name="com.android.settings.xxx">
		<intent-filter>
			<action android:name="com.is.static" />
		</intent-filter>
	</receiver>
	<!-- 注册系统静态广播接收器 -->
	<receiver android:name="com.android.settings.xxx">
		<intent-filter>
			<action android:name="android.intent.action.BATTERY_LOW" />
		</intent-filter>
	</receiver>

2、发送广播信息

private static final String STATICACTION = "com.is.static"; //定义一下STATICACTION 

Log.e("MainActivity", "发送自定义静态注册广播消息");
Intent intent = new Intent();
intent.setAction(STATICACTION);
intent.putExtra("msg", "接收静态注册广播成功!");
sendBroadcast(intent);

3、接收广播信息
public class StaticReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
	String msg = intent.getStringExtra("msg");
	Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}

}

动态注册方式

1、动态在MainActivity的onStart方法中注册广播事件。

private static final String DYNAMICACTION = "com.is.dynamic";

@Override
protected void onStart() {
super.onStart();
Log.e(“MainActivity”, “注册广播事件”);
// 注册自定义动态广播消息
IntentFilter filter_dynamic = new IntentFilter();
filter_dynamic.addAction(DYNAMICACTION);
registerReceiver(dynamicReceiver, filter_dynamic); //注册接收器
}

2、发送广播

	Log.e("MainActivity", "发送自定义动态注册广播消息");
	Intent intent = new Intent();
	intent.setAction(DYNAMICACTION);
	intent.putExtra("msg", "接收动态注册广播成功!");
	sendBroadcast(intent);

3、接收广播

private BroadcastReceiver dynamicReceiver = new BroadcastReceiver() {

	@Override
	public void onReceive(Context context, Intent intent) {
		Log.e("MainActivity", "接收自定义动态注册广播消息");
		if(intent.getAction().equals(DYNAMICACTION)){
			String msg = intent.getStringExtra("msg");
			Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
		}
	}
};

二、Android Activity类

onCreate() 这是第一次回调,活动在第一次创建时调用。
onStart() 这个回调被称为活动时变成对用户可见。
onResume() 这就是所谓的启动,当用户与应用程序交互。
onPause() 暂停活动不接收用户输入并不执行任何代码并调用时,当前的活动被暂停,恢复以前的活动。
onStop() 这个回调被称为活动时不再可见
onDestroy() 活动前由系统被销毁,调用此回调
onRestart() 活动重新启动时,停止后调用此回调

三、Android Service 类

描述:Service(服务)是一种在后台运行,执行长时间运行的操作,无需与用户交互的组件。
本质上,一个服务可以采取两种状态:
①Started 当一个应用程序组件,如活动,开始通过调用StartService()启动一个服务。开始以后服务可以无限期地在后台运行,即使启动它的组件被破坏。
②Bound 当一个应用程序组件绑定调用bindService()方法绑定服务。绑定服务提供客户端 - 服务器的接口,允许组件进行交互的服务,发送请求,得到结果,这样可以跨进程进程间通信(IPC)。

startService() ------- onStartCommand() ---- onDestroy()
------------------onCreate()
bindService() -------- onBind() ---- onUnbind() ---- onDestroy()

;