下面介绍一下广播机制原原理: 一.Broadcast Receive为广播接收器,它和事件处理机制类似,只不过事件的处理机制是程序组件级别的,而广播处理机制是系统级别的。 二.事件的广播比较简单,构建Intent对象,调用sendBroadcast()方法将广播发出。事件的接收是通过定义一个继承BroadcastReceiver类来实现,继承该类后覆盖其onReceiver方法,并在该方法中相应事件。 1.创建Broadcast,首先要有部件发送Broadcast,发送Broadcast的代码如下 Intent intent1 = new Intent(AC1);//AC1为reciver的动作名称。 sendBroadcast(intent1); 此处的AC1要定义: static final String AC1 = "com.test.action.NEW_BC1";// MainActivity: Intent intent=new Intent(); intent.setAction(MY_ACTION); intent.putExtra("msg","请回复信息"); sendBroadcast(intent); MyReceiver: public calss MyReceiver extends BroadcastReceiver{ public void onReceiver(Context ctx,intent intent){ //从Intent中获得信息 String msg=intent.getString("msg"); Toast.makeText(ctx,msg,Toast.LENGTH_LONG).show() } } 三.系统广播事件的使用 1. 这些广播是系统自动发出,我们直接定义事件接收器进行接收。 通过配置文件注册 MyReceiver2: public class MyReceiver2 extends BroadcastReceiver{ public void onReceiver( Context context,Intent intent){ Log.i("my_tag","BOOT_COMPLETED") } } // AndroidMainifest.xml: 第一种注册方式 <receiver android:name="MyReceiver2"> <intent-filter> <android android:name="android.intent.android.BOOT_COMPLETED"> </intent-filter> </receiver> 通过代码注册: IntentFilter filter=new IntentFilter();//实例化 //实例化Receiver MyReceiver2=new MyReceiver2(); // 第二种注册方式 //注册Receiver registerReceiver(r,filter); //注销Receiver unregisterReceiver(r); 四.Notification和NotificationManager的使用 Broadcast Receiver组件并没有提供可视化的界面来显示广播信息。这里我们可以使用Notification和Notification Manager来实现可视化的信息的界面,通过使用它们 ,我们可以显示广播信息的内容,图标及震动信息。 五.AlarmManager的使用 现在的手机普遍都会有一个闹钟功能,如果使用Android来实现一个闹钟,可以使用AlarmManager来实现。AndroidManager提供了一种系统级的提示服务,允许你安排在将来的某个时间执行一个任务,AlarmManager对象一般不直接实例化,而是通过Context.getSystemService(Context.ALARM_SERVICE)方法获得。 机制的方式也是有所不同的,但大家所需要的。 帮助文档也写得很明白。 |
联系客服