Android学习笔记--BroadcastReceiver

---恢复内容开始---

过了一个没有假期的10.1,今天来把之前学的东西复习一下,BroadcastReceiver,Android四大组件之一,为什么这么说,百度一下,你就知道,

BroadcastReceiver分为两种广播,一种是常驻型,一种是非常驻型,常驻型是在XML中国注册的被称为常驻型,在代码中注册的被称作为非常驻型,

第一步,先建立一个JAVA文件,继承与BroadcastReceiver类,

MyBind.java
 1 package com.wuxianedu.guangbo;
 2 
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.util.Log;
 7 
 8 /**
 9  * Created by Administrator on 2016/10/5.
10  */
11 public class MyBind extends BroadcastReceiver {
12         private static final String TAG = "--Main--";
13 
14         @Override
15         public void onReceive(Context context, Intent intent) {
16                 Log.e(TAG, "我是全局广播----------------------------");
17         }
18 
19 }

Mainactivity.java

 1 package com.wuxianedu.guangbo;
 2 
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.content.IntentFilter;
 7 import android.support.v7.app.AppCompatActivity;
 8 import android.os.Bundle;
 9 import android.util.Log;
10 import android.view.View;
11 
12 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
13 
14         private static final String TAG ="--Main--";
15         private MyDbind mydhd;
16 
17         @Override
18         protected void onCreate(Bundle savedInstanceState) {
19                 super.onCreate(savedInstanceState);
20                 setContentView(R.layout.activity_main);
21                 findViewById(R.id.fasong).setOnClickListener(this);
22                 findViewById(R.id.quanbu).setOnClickListener(this);
23                 findViewById(R.id.zhuce).setOnClickListener(this);
24                 findViewById(R.id.zhuxiao).setOnClickListener(this);
25         }
26 
27         @Override
28         public void onClick(View v) {
29                 switch (v.getId()){
30                         case R.id.quanbu://发送全局广播
31                                 Intent intent = new Intent();
32                                 //指定接受者
33                                 intent.setAction("com.wuxuanedu.hui");
34                                 //启动广播
35                                 sendBroadcast(intent);
36                                 break;
37                         case R.id.zhuce://注册局部,
38                                  mydhd = new MyDbind();
39                                 IntentFilter filter = new IntentFilter("com.wuxuanedu.qq");
40                                 registerReceiver(mydhd,filter);
41                                 break;
42                         case R.id.fasong://发送局部广播,如果要发送局部广播就要先注册
43                                 Intent intentt = new Intent();
44                                 //指定接受者
45                                 intentt.setAction("com.wuxuanedu.qq");
46                                 //启动广播
47                                 sendBroadcast(intentt);
48                                 break;
49                         case R.id.zhuxiao://注销局部
50                                 unregisterReceiver(mydhd);
51                                 break;
52                 }
53         }
54         class MyDbind extends BroadcastReceiver{
55 
56                 @Override
57                 public void onReceive(Context context, Intent intent) {
58                         Log.e(TAG, "我是局部广播----------------------------");
59                 }
60         }
61 
62 }

上述代码中,分别实现了发送局部广播和全局广播,全局广播是在XML中注册,而局部广播是在代码中注册,

代码里面我已经写注释了,

附上配置文件和XML布局代码

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.wuxianedu.guangbo">
 4 
 5     <application
 6         android:allowBackup="true"
 7         android:icon="@mipmap/ic_launcher"
 8         android:label="@string/app_name"
 9         android:supportsRtl="true"
10         android:theme="@style/AppTheme">
11         <activity android:name=".MainActivity">
12             <intent-filter>
13                 <action android:name="android.intent.action.MAIN" />
14 
15                 <category android:name="android.intent.category.LAUNCHER" />
16             </intent-filter>
17         </activity>
18         <receiver android:name=".MyBind">
19             <intent-filter >
20                 <action android:name="com.wuxuanedu.hui"/>
21             </intent-filter>
22         </receiver>
23     </application>
24 
25 </manifest>

布局代码

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="vertical"
 7               android:gravity="center_horizontal"
 8     android:paddingBottom="@dimen/activity_vertical_margin"
 9     android:paddingLeft="@dimen/activity_horizontal_margin"
10     android:paddingRight="@dimen/activity_horizontal_margin"
11     android:paddingTop="@dimen/activity_vertical_margin"
12     tools:context="com.wuxianedu.guangbo.MainActivity">
13 
14     <Button android:id="@+id/quanbu"
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content"
17         android:text="发送全局广播" />
18     <Button android:id="@+id/zhuce"
19             android:layout_width="wrap_content"
20             android:layout_height="wrap_content"
21             android:text="注册局部广播" />
22     <Button android:id="@+id/fasong"
23             android:layout_width="wrap_content"
24             android:layout_height="wrap_content"
25             android:text="发送局部广播" />
26     <Button android:id="@+id/zhuxiao"
27             android:layout_width="wrap_content"
28             android:layout_height="wrap_content"
29             android:text="注销局部广播" />
30 </LinearLayout>

---恢复内容结束---

原文地址:https://www.cnblogs.com/langfei8818/p/5935416.html