自定義廣播和廣播優先級


1、發送廣播代碼

 1 package com.example.alame;
 2 
 3 import android.os.Bundle;
 4 import android.app.Activity;
 5 import android.content.Intent;
 6 import android.view.View;
 7 
 8 public class MainActivity extends Activity {
 9 
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.activity_main);
14     }
15 
16     public void click(View view){
17         Intent intent = new Intent();
18         intent.setAction("com.exemple.oooxxx");
19         //發送一條無序的廣播;如果是無序的廣播,則所有的廣播接收者都能夠接收到這個廣播事件
20         //sendBroadcast(intent);
21         //如果廣播是有序的發送出去,則廣播接受者按優先級來接收廣播事件;有序廣播特點:高優先級的廣播接收者可以終止掉廣播事件
22         //sendOrderedBroadcast(intent, null);
23         //這種方式的FinalBroadcast廣播接受者無論如何都會接收到廣播
24         sendOrderedBroadcast(intent, null, new FinalBroadcast(), null, 0, null, null);
25     }
26 }

2、FinalBroadcast是無需在清單文件中進行配置的,並且無論如何都會接收到廣播

 1 package com.example.alame;
 2 
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 
 7 public class FinalBroadcast extends BroadcastReceiver {
 8 
 9     @Override
10     public void onReceive(Context context, Intent intent) {
11         // TODO Auto-generated method stub
12          System.out.println("我是最后接收者");
13     }
14 
15 }

 

 

3、測試接收自定義廣播事件代碼

1)清單文件

 1  <receiver android:name=".MyBroadcastReceiver">
 2             <intent-filter android:priority="1000">
 3                 <action android:name="com.exemple.oooxxx"/>
 4             </intent-filter>
 5         </receiver>
 6          <receiver android:name=".MyBroadcastReceiver2">
 7             <intent-filter android:priority="500">
 8                 <action android:name="com.exemple.oooxxx"/>
 9             </intent-filter>
10         </receiver>
11          <receiver android:name=".MyBroadcastReceiver3">
12             <intent-filter android:priority="100">
13                 <action android:name="com.exemple.oooxxx"/>
14             </intent-filter>
15         </receiver>

在清單文件中設置了優先級

2)廣播接收者代碼

 1 package com.example.module3g;
 2 
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.widget.Toast;
 7 
 8 public class MyBroadcastReceiver extends BroadcastReceiver {
 9 
10     @Override
11     public void onReceive(Context context, Intent intent) {
12         // TODO Auto-generated method stub
13         System.out.println("receriver 1");
14         Toast.makeText(context, "接收到頻道", 0).show();
15         //該函數會終止掉廣播,造成低優先級的廣播接受者接收不到廣播
16         //abortBroadcast();
17     }
18 
19 }
 1 package com.example.module3g;
 2 
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.widget.Toast;
 7 
 8 public class MyBroadcastReceiver2 extends BroadcastReceiver {
 9 
10     @Override
11     public void onReceive(Context context, Intent intent) {
12         // TODO Auto-generated method stub
13         System.out.println("receriver 2");
14         Toast.makeText(context, "接收到頻道2", 0).show();
15     }
16 
17 }
 1 package com.example.module3g;
 2 
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.widget.Toast;
 7 
 8 public class MyBroadcastReceiver3 extends BroadcastReceiver {
 9 
10     @Override
11     public void onReceive(Context context, Intent intent) {
12         // TODO Auto-generated method stub
13         System.out.println("receriver 3");
14         Toast.makeText(context, "接收到頻道3", 0).show();
15     }
16 
17 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM