android(eclipse)廣播機制知識梳理(三)

來源:互聯網
上載者:User

標籤:

1:分類:
   標準廣播:沒有先後順序,無法被截斷
   有序廣播:又先後順序,可以截斷

2:接收廣播:首先進行註冊,註冊的方式有靜態註冊和動態註冊。也就是在代碼中註冊和在AndroidManifest中註冊,並且一旦涉及到系統方面的關鍵性資訊無論靜態還是動態都要在manifest中聲明許可權:

  <users-permission andorid:name="android.permission.ACCESS_NETWORK_STATE"/>查詢網路狀態

     <users-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>接受系統廣播

     <uers-permisson android:Name="android.permisson.SYSTEM_ALERT_WINDOW"/>彈出系統層級的對話方塊

  

<user-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/><receiver android:name=".BootCmpleteReceiver">        <intent-filter>            <action android:name="android:intent.action.BOOT_COMPLETED"/></intent-filter></recerver>

發送標準廣播

public calss MyBroadcastReceiver extends BroadcastReceiver{   @override    public void onReceive(Context context,Intent intent){        Toast.makeText(context,"*****",Toast.LENGTH_SHORT).show(); }}<manifest xmlns:andorid=........><application.....><receiver android:name=".MyBroadcastReceiver"> <intent-filter>    <action andrid:name="com.example.broadcasttest.MYBROADCAST"/></receiver></application></manifest>MainActivity:   Button button=(Button)findViewById(R.id。send);   burron.setOnClickListener(new OnClickListener(){    @override     public void onClick(View v){      Intent inten =new Intent("加入註冊時約好的訊號");     sendBroadcast(intent);//sendOrderBroadcast(intent,null)發送有序廣播  }});

發送有序廣播:
    需要在聲明檔案中加入<intent-filter android:priority="**">優先順序表示語句

    如果不希望繼續傳播那就在廣播事件中加入 :abortBroadcast();

3:本地廣播的使用

 

  

public class MainActivity extens Activity{    private IntentFilter intentFilter;    private LocalBroadcastManager LocalBroadcastManager;    private LocalReceiver localReceiver;    @Override    public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout...);Button button=(Button) findViewById(R.id.send);localBroadcastManager= LocalBroadcastManager.gerInstance(this);//擷取執行個體 button.setOnClickLister(new OnClickListener(){@overridepublic void onClick(View v){Intent intent=new Intent(""com.example.broadcast.MYBROADCAST);localBroadcastManager. sendBroadcast(intent);}        });  intentFilter=new IntentFilter();        localReceiver=new LocalReceiver();        intentFilter.addAction("com.example.broadcast.MYBROADCAST");        localBroadcastManager.registerReceiver(localReceiver,intentFilter);    }   @Override  protected void onDestroy(){   super.onDestroy();   localBroadcastManager.unregisterReceiver(localReceiver);  }  @Override     class  LocalReceiver(){public void onReceive(){      ......} }

 本地廣播為了安全性無法通過靜態註冊,一般靜態註冊實在實現開機啟動的時候才會使用就是說程式還沒開啟就會先收到廣播。

注意:在廣播接收器裡面啟動活動的話一定要使用intent.addFlags(Intenten.FLAG_ACTIVITY_TASK)

還有如果只是調用類的靜態方法的話 那麼不用執行個體化也可以的,靜態方法不是屬於累對象的,是屬於類的。

 

 

android(eclipse)廣播機制知識梳理(三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.