1. 程式人生 > >安卓實驗課程——有序廣播的實現。

安卓實驗課程——有序廣播的實現。

實現有序廣播:

首先做成介面的實現,如圖:


插入一個BUtton按鈕即可,程式碼實現如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="@drawable/stitch_one" tools:context="com.example.administrator.gz_hh.MainActivity"
> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="80dp" android:onClick="send" android:text="傳送有序廣播" android:background="#FBFBFF" android:textSize="20dp" /> </RelativeLayout>
然後在MainActivity實現自定義廣播發送,程式碼如下:
package 
com.example.administrator.gz_hh; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void send(View view){ Intent intent =new Intent(); intent.setAction("Intercept_Stitch"); sendOrderedBroadcast(intent,null); } }
新增廣播接收者方便檢視順序廣播的結果,程式碼如下:

public class MyBroadcastReceiverOne extends BroadcastReceiver {

    @Override
public void onReceive(Context context, Intent intent) {
        Log.i("MyBroadcastReceiverOne","自定義廣播接收者one,接受到了廣播事件");

    }
}
按照 MyBroadcastReceiverOne 格式複製兩個(將對應的名字修改)貼上到對應的包中,如圖:


然後在清單檔案中新增三個receiver程式碼如下

<receiver android:name=".MyBroadcastReceiverOne">
    <intent-filter android:priority="1000">
        <action android:name="Intercept_Stitch"/>
    </intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReceiverSecond">
    <intent-filter android:priority="200">
        <action android:name="Intercept_Stitch"/>
    </intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReceiverThree">
    <intent-filter android:priority="600">
        <action android:name="Intercept_Stitch"/>
    </intent-filter>
</receiver>

做完這些便可執行檢視結果了

輸出順序按照許可權高低輸出 順序應該為一三二

結果如下圖:


如果件將第二個的許可權調高到與第一個相同時出現的結果如下圖:


如果在MyBroadcastReceiverSecond(許可權還是1000)中終結廣播結果如下:
可以看到第三個接受不到廣播,如圖: