溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

10天學通Android開發(fā)(3-1)-組件廣播接收器Broadcast Receive

發(fā)布時間:2020-07-31 13:59:17 來源:網(wǎng)絡 閱讀:534 作者:wanxl 欄目:移動開發(fā)

廣播接收器,它和事件處理機制類似,只不過事件的處理機制是程序組件級別的,而廣播處理機制是系統(tǒng)級別的。

BroadcastReceiver如操作系統(tǒng)啟動完畢,發(fā)出廣播信號;低電量提示廣播,應用中耗電量大的部分功能關閉;偵聽短信;

用于接收并處理廣播通知(broadcastannouncements)。多數(shù)的廣播是系統(tǒng)發(fā)起的,如地域變換、電量不足、來電來信等。程序也可以播放一個廣播。程序可以有任意數(shù)量的 broadcast receivers來響應它覺得重要的通知。broadcast receiver可以通過多種方式通知用戶:啟動activity、使用NotificationManager、開啟背景燈、振動設備、播放聲音等,最典型的是在狀態(tài)欄顯示一個圖標,這樣用戶就可以點它打開看通知內容。

通常我們的某個應用或系統(tǒng)本身在某些事件(電池電量不足、來電來短信)來臨時會廣播一個Intent出去,我們可以利用注冊一個Broadcast Receiver來監(jiān)聽到這些Intent并獲取Intent中的數(shù)據(jù)。

 

使用場合:通信過程傳遞過來的數(shù)據(jù)量不大,頻度也不高

主要功能

  1. 事件的廣播比價簡單,構建Intent對象,調用sendBroadcast()方法將廣播發(fā)出

  2. 直接定義事件接收器進行接收,重寫onReceiver

  3. 注冊\注銷Receiver ,registerReceiverr,filter,       unregisterReceiver(r);

     

 

 

案例:

  1. 創(chuàng)建新工程

  2. 新建一個廣播接收器,類: MyBroadcast擴展自BroadcastReceiver,一旦收到消息,會執(zhí)行抽象方法onReceive,如下:

 

 

publicvoid onReceive(Context arg0, Intent arg1) {

      // TODO Auto-generatedmethod stub

         System.out.println("我收到了你的信息:"+arg1.getStringExtra("MyTxt"));

   }

 

3) AndroidManifest.xml,注冊廣播接收器,類: MyBroadcast。

4MainActivity加進一按鈕,發(fā)送消息

<Button

       android:id="@+id/butSendBroad"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignLeft="@+id/textView1"

       android:layout_below="@+id/textView1"

       android:layout_marginTop="29dp"

        android:text="SendBroad" />

5)實現(xiàn)發(fā)送

butSendBroad.setOnClickListener(new View.OnClickListener() {

         

          @Override

          publicvoid onClick(View v) {

 

              Intent i=newIntent(MainActivity.this,MyBroadcast.class);

            

             i.putExtra("MyTxt", "HelloBroad");

            

             sendBroadcast(i);

            

          }

        }

       );

6)可先運行,logcat可看到消息

 

7動態(tài)的注冊和注銷廣播接受器, AndroidManifest中去除廣播接收器類的注冊

<!--  <receiverandroid:name="MyBroadcast"></receiver>-->

 

8)MainActivity中,添加注冊和注銷兩按鈕

<Button

       android:id="@+id/btnReg"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignLeft="@+id/butSendBroad"

       android:layout_below="@+id/butSendBroad"

       android:layout_marginTop="45dp"

       android:text="Regist"/>

 

    <Button

       android:id="@+id/btnUnReg"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignLeft="@+id/btnReg"

       android:layout_centerVertical="true"

        android:text="Unreg" />

9) MyBroadcast指定一地址變量:

 

public static final String ACTION="10-1.intenet.action.mybroad";

 

10) 定義MyBroadcast實例

 

private final MyBroadcast MyBRecive=newMyBroadcast();

 

11)實現(xiàn)注冊

btnReg.setOnClickListener(newView.OnClickListener() {

         

          @Override

          publicvoid onClick(View v) {

             // TODO Auto-generatedmethod stub

             registerReceiver(MyBRecive,new IntentFilter(MyBroadcast.ACTION));

            

            

          }

      });

 

12)取消注冊

btnUnReg.setOnClickListener(new View.OnClickListener() {

         

          @Override

          publicvoid onClick(View v) {

             // TODO Auto-generatedmethod stub

             unregisterReceiver(MyBRecive);

            

            

          }

      });

13)發(fā)送廣播更改:

butSendBroad.setOnClickListener(new View.OnClickListener() {

         

          @Override

          publicvoid onClick(View v) {

 

             //Intent i=newIntent(MainActivity.this,MyBroadcast.class);

              Intent i=newIntent(MyBroadcast.ACTION);

            

             i.putExtra("MyTxt", "HelloBroad");

            

             sendBroadcast(i);

            

          }

        }

       );

 

參考:

http://www.cnblogs.com/linzheng/archive/2011/01/22/1942053.html

 

×××:

http://down.51cto.com/data/1964492

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI