『壹』 android 注冊廣播有多少種方式
有兩種方式,一種是靜態注冊,就是在manifest文件里配置一下,這種方式注冊的廣播屬於系統級廣播。你的應用沒打開也能收到廣播。比如你要做一個收到某廣播就啟動你的應用的功能可以這樣搞。另一種是動態注冊,在代碼里執行一個rigisterBroadcastReciver(可能拼寫有誤)的方法。這種你要自己作好反注冊。這種廣播可以做成你的應用啟動後才監聽,關閉後就不監聽的效果。
『貳』 12、注冊廣播有幾種方式,這些方式有何優缺點請談談Android引入廣播機制的用意。
注冊廣播的分類:靜態注冊和動態注冊。
靜態注冊:在清單文件里直接注冊,從app開啟到app銷毀,一直在接收廣播,接收廣播時間長,但是接收廣播的優先順序低於動態注冊廣播。
動態注冊:動態注冊,動態銷毀,從onCreate到取消注冊,期間接收廣播,接收廣播時間是短且可控,接收廣播的優先順序高。例如:
發送廣播:
Intent i = new Intent();
i.setAction("ACTION_CLOSE");
sendBroadcast(i);
接受廣播:
onCreate(){
//注冊廣播的接受者
IntentFilter filter = new IntentFilter();
filter.addAction("ACTION_CLOSE_ACTIVITY");
receiver = new InnerReceiver();
registerReceiver(receiver, filter);
}
private class InnerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//TODO 當前Activity接收到廣播 需要做的事情
}
}
}
//注銷廣播
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
2.引入廣播的原因:
a) 不同的app之間傳信通用
b)發出一條指定,需要多個Activity都需要有反應
注意:以上僅供參考,如有疑問,請追問,謝謝。
『叄』 怎麼取消一個靜態注冊的broadcast receiver
BroadcastReceiver是一個用於監聽應用程序運行環境變化,並且對變化事件作出響應的組件。譬如說,當電池電量低、SD卡拔插或者手機啟動完畢等等事件發生的時候,系統都會廣播相應的事件,那麼,我們在應用程序中就可以利用BroadcastReceiver對這些事件進行監聽,並且執行onReceive方法作出相應的處理。
我們可以通過兩種方式注冊BroadcastReceiver,一是在Activity啟動過程中通過代碼動態注冊,二是在AndroidManifest.xml文件中利用<receiver>標簽進行靜態注冊。對於第一種方法,我們需要養成一個良好的習慣:在Activity進入停止或者銷毀狀態的時候使用unregisterReceiver方法將注冊的BroadcastReceiver注銷掉。基於此,我們很自然就會想,如果通過第二種方法注冊的BroadcastReceiver,是否需要通過代碼進行注銷呢?基於這個問題,Michael在OPhoneSDN上提出這個疑問。
最後,Michael還是從Android的源代碼中找到了這樣的注釋:If this BroadcastReceiver was launched through a <receiver> tag, then the object is no longer alive after returning from this function. This means you should not perform any operations that return a result to you asynchronously. 這段文字告訴我們:如果通過<receiver>標簽來注冊的BroadcastReceiver,那麼該對象的實例在onReceive被調用之後就會在任意時間內被銷毀。也就是說,我們並需要擔心靜態注冊的BroadcastReceiver的銷毀問題。
『肆』 android中注銷自定義廣播代碼
在onStop或者onDestroy裡面插入unregisterReceiver(receiver);
這個receiver就是你自己用registerBroadcastReceiver注冊的自定義廣播。
『伍』 Android開發中廣播的作用及注冊方式,
廣播是一種運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver 是對發送出來的Broadcast進行過濾接受並響應的一類組件。廣播既可以在清單文件AndroidManifest.xml 中注冊,也可以在運行時的代碼中使用Context.registerReceiver()進行注冊。只要是注冊了,當事件來臨的時候,即使程序沒有啟動,系統也在需要的時候啟動程序。
『陸』 安卓開發 如何關閉廣播
很牛逼的一個問題。廣播不是用來關閉的!動態注冊廣播接收器特點是當用來注冊的Activity關掉後,廣播也就失效了。我們可以通過兩種方式注冊BroadcastReceiver,一是在Activity啟動過程中通過代碼動態注冊,二是在AndroidManifest.xml文件中利用<receiver>標簽進行靜態注冊。對於第一種方法,我們需要養成一個良好的習慣:在Activity進入停止或者銷毀狀態的時候使用unregisterReceiver方法將注冊的BroadcastReceiver注銷掉。如果通過第二種方法注冊的BroadcastReceiver,是否需要通過代碼進行注銷呢?如果通過<receiver>標簽來注冊的BroadcastReceiver,那麼該對象的實例在onReceive被調用之後就會在任意時間內被銷毀。也就是說,我們並需要擔心靜態注冊的BroadcastReceiver的銷毀問題。靜態注冊無需擔憂廣播接收器是否被關閉,只要設備是開啟狀態,廣播接收器也是打開著的。也就是說哪怕app本身未啟動,該app訂閱的廣播在觸發時也會對它起作用。
『柒』 注冊廣播有幾種方式,這些方式有何優缺點請談談Android引入廣播機制的用意。
android中,不同進程之間傳遞信息要用到廣播,可以有兩種方式來實現。
第一種方式:在Manifest.xml中注冊廣播,是一種比較推薦的方法,因為它不需要手動注銷廣播(如果廣播未注銷,程序退出時可能會出錯)。
具體實現在Manifest的application中添加:上面兩個android:name分別是廣播名和廣播的動作(這里的動作是表示系統啟動完成),如果要自己發送一個廣播,在代碼中為:
Intent i = new Intent(「android.intent.action.BOOT_COMPLETED」);
sendBroadcast(i);
這樣,廣播就發出去了,然後是接收。
接收可以新建一個類,繼承至BroadcastReceiver,也可以建一個BroadcastReceiver的實例,然後得寫onReceive方法,實現如下:
protected BroadcastReceiver mEvtReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(「android.intent.action.BOOT_COMPLETED」)) {
//Do something
}
}
};
第二種方式,直接在代碼中實現,但需要手動注冊注銷,實現如下:
IntentFilter filter = new IntentFilter();
filter.addAction(「android.intent.action.BOOT_COMPLETED」);
registerReceiver(mEvtReceiver, filter); //這時注冊了一個recevier ,名為mEvtReceiver,然後同樣用上面的方法以重寫onReceiver,
最後在程序的onDestroy中要注銷廣播,實現如下:
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mPlayerEvtReceiver);
}