Android广播的学习

来源:互联网 发布:ubuntu下格式化u盘 编辑:程序博客网 时间:2024/05/23 15:03

闲来没事,有很多人在问怎么学习,就随便的写一个例子吧。

理解什么是广播。在Android系统中,广播(Broadcast)是在组件之间传播数据(Intent)的一种机制。就像生活中的广播一样有电台在不断的发送广播,至于谁会去接收不用知道也不用管,重要的是谁要听谁就调频到想听的频道就可以了。显然是一种松散的耦合结构。显然要实现广播就需要2个东西:发送消息的电台和接收器,

Android中也类似,分为异步广播和同步(顺序)广播:

Broadcast Receiver(广播接收器)包含两部分功能:一是发送广播消息,另一个是接收广播消息。系统和应用程序都可以发送广播消息,发送广播实际上就是调用sendBroadCast()方法向系统内部发送一个Intent对象,这与startActivity()的作用是类似的,所不同的是:发送广播只能启动Broadcast Receiver对象,而不会启动任何Activity或者Service对象。
生活中的每个广播电台都是有自己唯一的频段的,所以Android中也是用的是的广播标志代码。

final String BROADCAST_TAG = "com.csu.lz" ;//电台频率//按钮事件public void send_brodcast(View v){    //发送广播    Intent intent = new Intent(BROADCAST_TAG);    intent.putExtra("key1", "hello , this's a fm radio");    sendBroadcast(intent);//发送广播    }

好啦电台已经在准备就绪,接下来谁要收听呢?好办,准备一个收音机就可以了。写一个类继承BroadcastReceiver 重写onReceive

@Overridepublic void onReceive(Context context, Intent intent) {//在这里接受String msg = intent.getStringExtra("key1");Toast.makeText(context, "我是收音机,现在收听FM999,我听到的是:" + msg, Toast.LENGTH_SHORT).show();}

最后需要在清单文件中注册接受者:

<receiver android:name=".MyBroadCastReceiver">        <intent-filter>            <action android:name="com.csu.lz"/>        </intent-filter>        </receiver>

一个简单的广播的发送和接受就已经完成了。

淡然我们还有动态的方式来完成广播的接收:registerReceiver(广播接受对象,IntentFilter) ;

我们也可以在 onResume中:

    MyBroadCastReceiver myrecevier ;    @Override    protected void onResume() {    super.onResume();    IntentFilter intFilter = new IntentFilter(BROADCAST_TAG);        //intFilter.addAction(Intent.ACTION_BATTERY_CHANGED);        myrecevier = new MyBroadCastReceiver();    registerReceiver(myrecevier, intFilter);//注册    }    @Override    protected void onPause() {    super.onPause();    unregisterReceiver(myrecevier);//    }
这样就不需要在清单里去定义了。

事实上 Android系统就定义了很多广播我们就可以利用这些获取我们要用的信息,比如电池信息等等。

1.“android.provider.Telephony.SMS_RECEIVED” 收到短信
2. Intent.ACTION_BATTERY_CHANGED  剩余的手机电池量
3. Intent.ACTION_MEDIA_MOUNTED SD 卡成功挂载
4. Intent.ACTION_MEDIA_UNMOUNTED SD 卡未挂载
5. Intent.ACTION_NEW_OUTGOING_CALL 拨打电话
    TelephonyManager.ACTION_PHONE_STATE_CHANGED 来电
6. Intent.ACTION_PACKAGE_ADDED 执行安装
7. Intent.ACTION_PACKAGE_REMOVED 执行卸载
........
好啦,简单的说了下广播,希望对新朋友有帮助。



0 0
原创粉丝点击