国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android基礎知識之broadcast廣播詳解

2019-12-12 06:13:47
字體:
來源:轉載
供稿:網友

Android中的廣播用的太多了,今天稍微總結一下。
按注冊方式分為兩種:

1.靜態注冊廣播:
靜態注冊廣播就是在androidManifest.xml文件中注冊廣播,假設我們要實現這樣一個效果,在一個activity上點擊按鈕,發送一條廣播,這條廣播彈出一個toast,顯示“靜態”二字。

先看看廣播接受者:

public class MyBroadcast extends BroadcastReceiver {  @Override  public void onReceive(Context context, Intent intent) {    Toast.makeText(context,"靜態", Toast.LENGTH_LONG).show();  }}

清單文件中注冊:

  <receiver android:name="com.example.staticbroadcast.MyBroadcast" >      <intent-filter>        <action android:name="com.test.StaticBroadcast" />      </intent-filter>    </receiver>

activity中的點擊事件(發送廣播):

 this.static_btn.setOnClickListener(new OnClickListener() {      @Override      public void onClick(View v) {        Intent intent = new Intent();        intent.setAction("com.test.StaticBroadcast");        sendBroadcast(intent);      }    });

2.動態注冊:
動態注冊一般是在activity中的onStart()方法中注冊,在onStop()方法中解除注冊,代碼如下:

public class MainActivity extends Activity {  private Button static_btn;  private Button dynamic_btn;  private BroadcastReceiver myBroadcastReceiver;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    this.static_btn = (Button) this.findViewById(R.id.button1);    this.dynamic_btn = (Button) this.findViewById(R.id.Button01);    myBroadcastReceiver = new BroadcastReceiver(){      @Override      public void onReceive(Context context, Intent intent) {        Toast.makeText(MainActivity.this,"你好,這里是動態廣播!", Toast.LENGTH_LONG).show();      }    };//   this.static_btn.setOnClickListener(new OnClickListener() {////     @Override//     public void onClick(View v) {//       Intent intent = new Intent();//       intent.setAction("com.test.StaticBroadcast");//       sendBroadcast(intent);//     }//   });    this.dynamic_btn.setOnClickListener(new OnClickListener() {      @Override      public void onClick(View v) {        //發送廣播        Intent intent = new Intent();        intent.setAction("DynamicBroadcast");        sendBroadcast(intent);      }    });  }  @Override  protected void onStart() {    super.onStart();    //注冊廣播    IntentFilter intentFilter = new IntentFilter();    intentFilter.addAction("DynamicBroadcast");    registerReceiver(myBroadcastReceiver, intentFilter);  }  @Override  protected void onStop() {    super.onStop();    //取消注冊    unregisterReceiver(myBroadcastReceiver);  }}

關于靜態注冊的細節:
android:exported=”true”這個屬性表示該廣播接收器是否接收來自其他App發出的廣播,如果有intent-filter屬性,則默認為true,否則默認為false。

每個廣播接收者都可以接受多個廣播源,如果是靜態注冊,那么你要這么做:

  <receiver       android:exported="true"      android:name="com.example.staticbroadcast.MyBroadcast" >      <intent-filter>        <action android:name="com.test.StaticBroadcast" />        <action android:name="com.test.StaticBroadcast2"/>      </intent-filter>    </receiver>

在廣播接收器中這樣處理:

  @Override  public void onReceive(Context context, Intent intent) {    if (intent.getAction().equals("com.test.StaticBroadcast")) {      Toast.makeText(context, "靜態", Toast.LENGTH_SHORT).show();    } else if (intent.getAction().equals("com.test.StaticBroadcast2")) {      Toast.makeText(context, "靜態2", Toast.LENGTH_SHORT).show();    }  }

如果是動態注冊,注冊方式如下:

  @Override  protected void onStart() {    super.onStart();    //注冊廣播    IntentFilter intentFilter = new IntentFilter();    intentFilter.addAction("DynamicBroadcast");    intentFilter.addAction("DynamicBroadcast2");    registerReceiver(myBroadcastReceiver, intentFilter);  }

廣播接收器中的處理方式與靜態注冊一致。

關于怎樣使用broadcast實現activity和fragment之間的通信可以查看我的另一篇博客使用Broadcast實現android組件之間的通信

原文地址:http://blog.csdn.net/u012702547/article/details/46955787

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张北县| 新宁县| 汉源县| 密山市| 汝城县| 麦盖提县| 中西区| 弥勒县| 阿尔山市| 女性| 盈江县| 兖州市| 哈尔滨市| 琼海市| 安岳县| 丽水市| 永康市| 铜山县| 安新县| 翁源县| 乌拉特前旗| 和顺县| 西乡县| 英山县| 忻城县| 嘉善县| 全南县| 宾川县| 长顺县| 河间市| 宣武区| 宁德市| 汾西县| 永吉县| 根河市| 沈阳市| 柳河县| 威信县| 依兰县| 马山县| 手游|