Android_读书笔记_3
简单的广播与( Intent )接收.
在Android中很多很多地方都会使用到广播,操作系统使用广播讲信息传递到其他的应用程序中去,也会产生很多设备状态的广播......唉,算了算了,嘿嘿
一.广播
Android框架支持的广播有两种类型:普通广播( normal broadcast )和有序广播( ordered boradcast ),
i> 前者将异步的送达到所有的接收器,没有特定的顺序,而后者则按照一定的顺序依次送达广播事件,接收器可以将事件继续传递给队列中的下一个接收器,也可以对其进行终止。
ii> 两种广播都具有“黏性”,也就是说在与广播相关的Intent在广播完成后依然存在,所以广播接收器可以通过registerReceiver()方法的返回值获得有效的Intent数据。
1.发送广播:
i> Context . sendBroadcast() 发送普通广播
ii> Context . sendOrderedBroadcast() 发送有序广播
iii> Context . sendStickyOrderded() 发送黏性广播
2.创建广播:
private static String RECEIVER = "xxx"; //你指定一个独特的标记
Intent intent = new Intent( RECEIVER );
sendBroadcast( intent );
Android操作系统会处理广播的传递,除了某些被保护或者需要一定的许可权限才能创建的广播以外,一般的广播可以被任何应用程序创建。
二.接收广播
Android操作系统使用Intent过滤器来将广播与适当的应用程序匹配。为了让程序能够成为一个广播接收器:
1> 注册接收广播,制定一个特定的Intent过滤器,它将被操作系统用来匹配接收到的广播。
2> 实现一个广播接收器类( BroadcastReceiver类 ),通过其onReceiver() 回调方法实现自己的事件处理。
注: 实现的广播接收器类为一个内部类( inner calss )那么它应该被声明为 public static. //不太理解这个,要是有人懂请一定要给我讲讲
对于注册广播接收:
1> 动态注册,实用Contex . registerReceiver() 方法 以及 unregisterReceiver() 方法。动态的注册使得应用程序可以关闭对不能或无需进行处理的广播的监听,通常可以在Activity的onResume()中进行注册,在onPause()回调方法中进行注销(停止监听)。
2> 静态注册,在Manifest文件中的<application>标记中添加<receiver>标记。
总的一个简单的实例:
1 package com.qimu.intent; 2 3 import android.app.Activity; 4 import android.content.BroadcastReceiver; 5 import android.content.Context; 6 import android.content.Intent; 7 import android.content.IntentFilter; 8 import android.os.Bundle; 9 import android.view.View; 10 import android.widget.Button; 11 import android.widget.TextView; 12 13 public class MainActivity extends Activity { 14 15 private TextView tv_broad; 16 private Button bt_broad; 17 myBroadcastReceiver receiver; 18 19 private static String QIMU_RECEIVER = "xxx"; 20 21 @Override 22 protected void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_main); 25 26 tv_broad = ( TextView ) findViewById( R.id.tv_broad ); 27 bt_broad = ( Button ) findViewById( R.id.bt_broad ); 28 29 bt_broad.setOnClickListener( new View.OnClickListener() { 30 31 @Override 32 public void onClick(View arg0) { 33 34 Intent intent = new Intent( QIMU_RECEIVER ); 35 intent.putExtra( "broad", "Send Sucess......" ); 36 sendBroadcast( intent ); 37 } 38 }); 39 } 40 41 protected void onResume() { 42 super.onResume(); 43 44 receiver = new myBroadcastReceiver(); 45 IntentFilter filter = new IntentFilter( QIMU_RECEIVER ); 46 registerReceiver( receiver, filter ); 47 } 48 49 protected void onPause() { 50 super.onPause(); 51 52 unregisterReceiver( receiver ); 53 } 54 55 public class myBroadcastReceiver extends BroadcastReceiver { 56 57 @Override 58 public void onReceive(Context context, Intent intent) { 59 60 String _str = intent.getStringExtra( "broad" ); 61 tv_broad.setText( _str ); 62 } 63 } 64 }
处理系统的广播: 太多太多了,只有谢谢好心人了,嘿嘿,http://blog.chinaunix.net/uid-25370280-id-1735613.html
期末复习,哎,加油吧......
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。