zoukankan      html  css  js  c++  java
  • 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

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

      

      

  • 相关阅读:
    Ajax请求如何设置csrf_token
    js和jQuery实现的Ajax
    Ajax简介
    JSON
    Django基础之中间件的执行流程
    Django基础之中间件
    Django基础之ModelForm
    Django基础之form表单的补充进阶
    APK的反编译(获取代码和资源文件)
    Smali语法基础
  • 原文地址:https://www.cnblogs.com/yuqt/p/5059954.html
Copyright © 2011-2022 走看看