一、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()