android中广播的使用

  广播消息机制用于进行系统级别的消息通知,每个应用程序可以对感兴趣的广播进行注册,并且将接收广播的方法定义在广播接收器中(Broadcast)。

  广播可以分为标准广播和有序广播。

  注册广播的方法可以动态注册(在代码中进行注册)和静态注册(在清单文件中注册)

  我们也可以发布自己定义的广播,并接收。

  1.动态注册

  动态注册的过程:

      1)先自己定义一个广播接收者,继承Broadcast。重写onReceive()方法。

  2)创建IntentFilter类,并添加要收听的广播。

  3)创建自定义的广播接收者,并进行注册。(一般都是在oncreate()方法中实现)

  4)取消注册广播接收者。(一般在onDestroy()方法中实现。

      下面看具体实现的代码。

  

 1 public class MainActivity extends AppCompatActivity {
 2 
 3 
 4     IntentFilter intentFilter;
 5     MyBroadcastReceiver myBroadcastReceiver;
 6 
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main);
11 
12         intentFilter = new IntentFilter();
13         intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
14 
15         myBroadcastReceiver = new MyBroadcastReceiver();
16         registerReceiver(myBroadcastReceiver,intentFilter);
17     }
18 
19 
20 
21 
22     @Override
23     protected void onDestroy() {
24         super.onDestroy();
25         unregisterReceiver(myBroadcastReceiver);
26 
27     }
28 
29     class MyBroadcastReceiver extends BroadcastReceiver{
30 
31         @Override
32         public void onReceive(Context context, Intent intent) {
33             Toast.makeText(context,"network is changed",Toast.LENGTH_LONG).show();
34         }
35     }
36 }
View Code

  2.静态注册

  静态注册过程比动态注册简单,只需要2步

  1)自己定义一个接收者类,继承Broadcast。

  2)在清单文件(AndroidManifest.XML)文件中添加相应的要接受的广播。

  具体的代码如下

  Java代码

1 public class PowerConnReceiver extends BroadcastReceiver {
2     @Override
3     public void onReceive(Context context, Intent intent) {
4 
5        Toast.makeText(context,"power is connected ",Toast.LENGTH_LONG).show();
6     }
7 }
PowerConnReceiver

  AndroidManifest.XML中的代码

 1     <application
 2         android:allowBackup="true"
 3         android:icon="@mipmap/ic_launcher"
 4         android:label="@string/app_name"
 5         android:theme="@style/AppTheme" >
 6         <activity
 7             android:name=".MainActivity"
 8             android:label="@string/app_name" >
 9             <intent-filter>
10                 <action android:name="android.intent.action.MAIN" />
11 
12                 <category android:name="android.intent.category.LAUNCHER" />
13             </intent-filter>
14 
15 
16         </activity>
17 
18         <receiver android:name=".PowerConnReceiver">
19             <intent-filter>
20                 <action android:name="ANDROID.INTENT.ACTION.ACTION_POWER_CONNECTED"/>
21             </intent-filter>
22         </receiver>
23     </application>
View Code

  我们还可以自己定义广播,进行发送。不同的进程之间可以通过广播通讯,当然这是不被提倡的。

  

  

原文地址:https://www.cnblogs.com/yuqt/p/5059954.html