BroadcastReceiver的兩種注冊方式和使用


1.靜態注冊,在minifest文件中

<receiver android:name=".BroadcastReceiverDemo" >
            <intent-filter>
                <action android:name="com.simware.BroadcastReceiverDemo" >
                </action>
            </intent-filter>
</receiver>

注冊完之后即可以發送廣播,使用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()來實現

接受廣播使用代碼:
public class BroadcastReceiverDemo extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String msg = intent.getStringExtra("message");
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
}
}

發送廣播:
Intent mIntent = new Intent("com.simware.BroadcastReceiverDemo");
mIntent.putExtra("message", "hahahahaha");
sendBroadcast(mIntent);

2.動態注冊,在代碼中注冊解注冊

registerReceiver(BroadcastReceiver receiver, IntentFilter filter)

unregisterReceiver(BroadcastReceiver receiver) 

在Activity中代碼注冊廣播建議在:onResume()中注冊(也可在onCreate里面注冊);

在Activity中代碼注銷廣播建議在:onPause()中注銷(也可在onDestory里面注銷)

如果一個BroadcastReceiver用於更新UI(User Interface),那么通常會使用這種方法進行注冊,在Activity啟動的時候進行注冊,在Activity不可見后取消注冊。不過應用內的更建議使用LocalBroadcastReceiver

 

 

區別:

 

        在AndroidManifest中進行注冊后,不管該應用程序是否處於活動狀態,都會進行監聽,比如某個程序是監聽 內存 的使用情況的,當在手機上安裝好后,不管該應用程序是處於什么狀態,都會執行改監聽方法中的內容。

 

        在代碼中進行注冊后,當應用程序關閉后,就不再進行監聽。如果是在Activity中進行的注冊和解注冊,則生命周期是跟隨該Activity的。我們知道,應用程序是否省電,決定了該應用程序的受歡迎程度,所以,對於那些沒必要在程序關閉后仍然進行監聽的Receiver,在代碼中進行注冊,無疑是一個明智的選擇。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM