標籤:android style class blog code http
簡單的廣播與( 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 @Override22 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 @Override32 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 @Override58 public void onReceive(Context context, Intent intent) {59 60 String _str = intent.getStringExtra( "broad" );61 tv_broad.setText( _str );62 }63 }64 }Intent廣播
處理系統的廣播: 太多太多了,只有謝謝好心人了,嘿嘿,http://blog.chinaunix.net/uid-25370280-id-1735613.html
期末複習,哎,加油吧......