Android基礎(chǔ)知識(shí)之broadcast廣播詳解
Android中的廣播用的太多了,今天稍微總結(jié)一下。
按注冊(cè)方式分為兩種:
1.靜態(tài)注冊(cè)廣播:
靜態(tài)注冊(cè)廣播就是在androidManifest.xml文件中注冊(cè)廣播,假設(shè)我們要實(shí)現(xiàn)這樣一個(gè)效果,在一個(gè)activity上點(diǎn)擊按鈕,發(fā)送一條廣播,這條廣播彈出一個(gè)toast,顯示“靜態(tài)”二字。
先看看廣播接受者:
public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"靜態(tài)", Toast.LENGTH_LONG).show();
}
}
清單文件中注冊(cè):
<receiver android:name="com.example.staticbroadcast.MyBroadcast" >
<intent-filter>
<action android:name="com.test.StaticBroadcast" />
</intent-filter>
</receiver>
activity中的點(diǎn)擊事件(發(fā)送廣播):
this.static_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("com.test.StaticBroadcast");
sendBroadcast(intent);
}
});
2.動(dòng)態(tài)注冊(cè):
動(dòng)態(tài)注冊(cè)一般是在activity中的onStart()方法中注冊(cè),在onStop()方法中解除注冊(cè),代碼如下:
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,"你好,這里是動(dòng)態(tài)廣播!", 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) {
//發(fā)送廣播
Intent intent = new Intent();
intent.setAction("DynamicBroadcast");
sendBroadcast(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
//注冊(cè)廣播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("DynamicBroadcast");
registerReceiver(myBroadcastReceiver, intentFilter);
}
@Override
protected void onStop() {
super.onStop();
//取消注冊(cè)
unregisterReceiver(myBroadcastReceiver);
}
}
關(guān)于靜態(tài)注冊(cè)的細(xì)節(jié):
android:exported=”true”這個(gè)屬性表示該廣播接收器是否接收來(lái)自其他App發(fā)出的廣播,如果有intent-filter屬性,則默認(rèn)為true,否則默認(rèn)為false。
每個(gè)廣播接收者都可以接受多個(gè)廣播源,如果是靜態(tài)注冊(cè),那么你要這么做:
<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, "靜態(tài)", Toast.LENGTH_SHORT).show();
} else if (intent.getAction().equals("com.test.StaticBroadcast2")) {
Toast.makeText(context, "靜態(tài)2", Toast.LENGTH_SHORT).show();
}
}
如果是動(dòng)態(tài)注冊(cè),注冊(cè)方式如下:
@Override
protected void onStart() {
super.onStart();
//注冊(cè)廣播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("DynamicBroadcast");
intentFilter.addAction("DynamicBroadcast2");
registerReceiver(myBroadcastReceiver, intentFilter);
}
廣播接收器中的處理方式與靜態(tài)注冊(cè)一致。
關(guān)于怎樣使用broadcast實(shí)現(xiàn)activity和fragment之間的通信可以查看我的另一篇博客使用Broadcast實(shí)現(xiàn)android組件之間的通信
原文地址:http://blog.csdn.net/u012702547/article/details/46955787
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android中BroadcastReceiver(異步接收廣播Intent)的使用
- Android提高之BroadcastReceiver實(shí)例詳解
- 深入Android中BroadcastReceiver的兩種注冊(cè)方式(靜態(tài)和動(dòng)態(tài))詳解
- Android編程四大組件之BroadcastReceiver(廣播接收者)用法實(shí)例
- Android中的廣播(BroadCast)詳細(xì)介紹
- Android查看電池電量的方法(基于BroadcastReceiver)
- Android使用廣播(BroadCast)實(shí)現(xiàn)強(qiáng)制下線的方法
- Android實(shí)現(xiàn)Activity、Service與Broadcaster三大組件之間互相調(diào)用的方法詳解
- Android開(kāi)發(fā)之BroadcastReceiver用法實(shí)例分析
- Android學(xué)習(xí)之Broadcast的簡(jiǎn)單使用
相關(guān)文章
Android中的深度鏈接技術(shù)實(shí)戰(zhàn)
本文主要介紹了Android中的深度鏈接技術(shù)實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Android WebView上實(shí)現(xiàn)JavaScript與Java交互
這篇文章主要介紹了Android WebView上實(shí)現(xiàn)JavaScript與Java交互 的相關(guān)資料,需要的朋友可以參考下2016-03-03
詳解android 人臉檢測(cè)你一定會(huì)遇到的坑
這篇文章主要介紹了詳解android 人臉檢測(cè)你一定會(huì)遇到的坑,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Android 封裝Okhttp+Retrofit+RxJava,外加攔截器實(shí)例
下面小編就為大家分享一篇Android封裝Okhttp+Retrofit+RxJava,外加攔截器實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
基于Android在布局中動(dòng)態(tài)添加view的兩種方法(總結(jié))
下面小編就為大家?guī)?lái)一篇基于Android在布局中動(dòng)態(tài)添加view的兩種方法(總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
Android Flutter制作交錯(cuò)動(dòng)畫的示例代碼
Android Service自啟動(dòng)注意事項(xiàng)分析

