broadcast example

 

public class MyReceiver1 extends BroadcastReceiver {
    
    private static final String TAG = "CM-MyReceiver1";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "msg:" + intent.getStringExtra("msg"));
        // 创建一个Bundle对象,并存入数据
        Bundle bundle = new Bundle();
        bundle.putString("msg", "第一个BroadcastReceiver存入的消息");
        // 将bundle放入结果中
        setResultExtras(bundle);
        // 取消Broadcast的继续传播
        // abortBroadcast();
    }
}

 

public class MyReceiver2 extends BroadcastReceiver {

    private static final String TAG = "CM-MyReceiver2";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "msg:" + intent.getStringExtra("msg"));
        String first = "";        
        Bundle bundle = getResultExtras(true);
        first = bundle.getString("msg");
        Log.d(TAG, "1 " + first);
    }
}

 

public class SortedBroadcast extends Activity {
    protected static final String TAG = "CM-SortedBroadcast";
    Button send;

    private class FinalReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("CM-FinalReceiver", "get it");
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 获取程序中的send按钮
        send = (Button) findViewById(R.id.send);
        send.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建Intent对象
                Intent intent = new Intent();
                intent.setAction("org.crazyit.action.CRAZY_BROADCAST");
                intent.putExtra("msg", "原始的消息");

                Log.d(TAG, "send broadcast");

                // 发送普通广播
                sendBroadcast(intent);                

                // 发送有序广播
                //sendOrderedBroadcast(intent, null);//不带权限的有序广播

                // FinalReceiver finalReceiver = new FinalReceiver();
                // sendOrderedBroadcast(intent, null, finalReceiver, null, 0, null, null);//不带权限的,但含有finalReceiver的广播
            }
        });
    }
}

 

        <receiver
            android:name=".MyReceiver1" >
            <intent-filter android:priority="20" >
                <action android:name="org.crazyit.action.CRAZY_BROADCAST" />
            </intent-filter>
        </receiver>
        <receiver android:name=".MyReceiver2" >
            <intent-filter android:priority="0" >
                <action android:name="org.crazyit.action.CRAZY_BROADCAST" />
            </intent-filter>
        </receiver>

--------------------------------------------------------------------

sendBroadcast(intent);

04-07 23:23:38.746 29165 29165 D CM-SortedBroadcast: send broadcast
04-07 23:23:38.756 29165 29165 D CM-MyReceiver1: msg:原始的消息
04-07 23:23:38.766 29165 29165 D CM-MyReceiver2: msg:原始的消息
04-07 23:23:38.766 29165 29165 D CM-MyReceiver2: 1 null

-----------------------------------------------------------

sendOrderedBroadcast(intent, null);//不带权限的有序广播

04-07 23:30:35.146 29812 29812 D CM-SortedBroadcast: send broadcast
04-07 23:30:35.166 29812 29812 D CM-MyReceiver1: msg:原始的消息
04-07 23:30:35.166 29812 29812 D CM-MyReceiver2: msg:原始的消息       //看来优先级低的广播也可以获得原始的消息
04-07 23:30:35.166 29812 29812 D CM-MyReceiver2: 1 第一个BroadcastReceiver存入的消息    //MyReceiver1存入的消息

-----------------------------------------------------

 FinalReceiver finalReceiver = new FinalReceiver();
 sendOrderedBroadcast(intent, null, finalReceiver, null, 0, null, null);//不带权限的,但含有finalReceiver的广播
04-07 23:33:33.496 30372 30372 D CM-SortedBroadcast: send broadcast
04-07 23:33:33.496 30372 30372 D CM-MyReceiver1: msg:原始的消息
04-07 23:33:33.506 30372 30372 D CM-MyReceiver2: msg:原始的消息
04-07 23:33:33.506 30372 30372 D CM-MyReceiver2: 1 第一个BroadcastReceiver存入的消息
04-07 23:33:33.506 30372 30372 D CM-FinalReceiver: get it   //FinalReceiver是最后一个收到广播的 看来其优先级最低-1000
-------------------------------------------------------------------------

posted @ 2015-03-30 13:45  牧 天  阅读(187)  评论(0)    收藏  举报