Android 广播的分类?

发布于 2020-01-11 22:52:40
关注者
0
被浏览
4691
1 个回答
  • 面试哥
    面试哥 2020-01-11
    为面试而生,有面试问题,就找面试哥。

    分为有序广播和无序广播两类。

    无序广播发送代码:

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
         
        public void click(View v){
            //启动界面 startActivity
            //发送广播 sendBroadcast
         
            Intent intent = new Intent();
         
            intent.setAction("com.itheima.cctv.action.NEWS");   
            intent.putExtra("data", "我是一个无须的广播");
            sendBroadcast(intent);  
        }
       }
    }
    

    无序广播的监听代码:

    public class CctvReceiver extends BroadcastReceiver {
        private static final String TAG = "CctvReceiver";
        @Override
        public void onReceive(Context context, Intent intent) {
            String data = intent.getStringExtra("data");
            Log.d(TAG, "data==="+data);
        }
    }
    
    <receiver android:name="com.itheima.cctv.CctvReceiver">
                <intent-filter >
                <!--这里监听的广播就是上面发送广播设置的			      intent.setAction("com.itheima.cctv.action.NEWS");-->
                    <action android:name="com.itheima.cctv.action.NEWS"/>
                </intent-filter>
    </receiver>
    

    有序广播发送:

    public class ShengReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("vivi", "我是省级部门,我收到的指令是:"+getResultData());
            //getResultData()是用来获取有序广播里面的数值.这里的信息是:
            //主席讲话:每人奖励10斤土豆
                setResultData("主席讲话:每人奖励7斤土豆");//有序广播的数值,可以被修改,后面的程序在接受到这个广播,就会变成,现在我们改变的值了
         
            //有序广播传输是可以终止的.但是最终的接受者就算在终止之后,也是可以接受到数据的
            //abortBroadcast();
        }
     }
     
    public class ShiReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("vivi", "我是市级部门,我收到的指令是:"+getResultData());
        //因为上面修改了数据,所以这里获取到的数据是:主席讲话:每人奖励7斤土豆
        }
    }
    <!--有序广播的优先级别使用 android:priority=""来指定,最高是1000,最低是-1000-->
    <receiver android:name="com.itheima.region.ShengReceiver">
                <intent-filter android:priority="1000">
                    <action android:name="com.itheima.gov.action.POTATO"/>
                </intent-filter>
            </receiver>
     <receiver android:name="com.itheima.region.ShiReceiver">
           <intent-filter android:priority="500">
                <action android:name="com.itheima.gov.action.POTATO"/>
            </intent-filter>
        </receiver>
    

     

    有序接收:

    public class MyReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("vivi", "我是恩恩主席的内线,我收到的指令是:"+getResultData());
        }
    }
    
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看