安卓开发:有序广播和无序广播

无序广播形象解释:只要我按时发出去,收不收随你。

新建一个app用于发送广播:

    public void click(View v) {
        Intent intent = new Intent();

        intent.setAction("org.dreamtech.custom");

        intent.putExtra("name", "无序广播");

        sendBroadcast(intent);
    }

再新建一个app用于接收广播:

package org.dreamtech.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class ReceiveReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        String content = intent.getStringExtra("name");

        Toast.makeText(context, content, Toast.LENGTH_LONG).show();

    }

}

第二个app注意配置:

        <receiver android:name="org.dreamtech.receiver.ReceiveReceiver">
            <intent-filter >
                <action android:name="org.dreamtech.custom"/>
            </intent-filter>
        </receiver>

部署两个app:

打开第一个app点击发送,就会弹出一句话:“无序广播”

有序广播形象解释:一个大公司总经理做出一个决定,分发到下部各个部门经理,他们在处理后交代给手下员工

新建一个app发送有序广播:

    public void click(View v) {
        Intent intent = new Intent();
        intent.setAction("org.dreamtech.send");
        sendOrderedBroadcast(intent, null, new FinalReceiver(), null, 1,
                "有序广播", null);
    }
package org.dreamtech.demo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class FinalReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String content = getResultData();

        Toast.makeText(context, "广播最终结果" + content, Toast.LENGTH_LONG).show();
    }

}

新建一个app接收:

四级接收:

package org.dreamtech.demo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class FirstReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String content = getResultData();

        Toast.makeText(context, "第一级" + content, Toast.LENGTH_LONG).show();

        setResultData("已经过第一级处理");
    }

}
package org.dreamtech.demo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class SecondReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String content = getResultData();

        Toast.makeText(context, "第二级" + content, Toast.LENGTH_LONG).show();

        setResultData("已经过第二级处理");
    }

}
package org.dreamtech.demo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class ThirdReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String content = getResultData();

        Toast.makeText(context, "第三级" + content, Toast.LENGTH_LONG).show();

        setResultData("已经过第三级处理");
        
        //终止
        //abortBroadcast();
        
    }

}
package org.dreamtech.demo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class FourthReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String content = getResultData();

        Toast.makeText(context, "第四级" + content, Toast.LENGTH_LONG).show();
        
    }

}

注意配置:

        <receiver android:name="org.dreamtech.demo.FirstReceiver" >
            <intent-filter android:priority="1000" >
                <action android:name="org.dreamtech.send" />
            </intent-filter>
        </receiver>
        <receiver android:name="org.dreamtech.demo.SecondReceiver" >
            <intent-filter android:priority="500" >
                <action android:name="org.dreamtech.send" />
            </intent-filter>
        </receiver>
        <receiver android:name="org.dreamtech.demo.ThirdReceiver" >
            <intent-filter android:priority="100" >
                <action android:name="org.dreamtech.send" />
            </intent-filter>
        </receiver>
        <receiver android:name="org.dreamtech.demo.FourthReceiver" >
            <intent-filter android:priority="50" >
                <action android:name="org.dreamtech.send" />
            </intent-filter>
        </receiver>

猜你喜欢

转载自www.cnblogs.com/xuyiqing/p/8906530.html