Android_讀書筆記_3

來源:互聯網
上載者:User

標籤: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

 

期末複習,哎,加油吧......

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.