Android BroadcastReceiver
(學習mars老師的視頻)
註冊的方式
有兩種:
一個是在AndroidManifest.xml中聲明:
<receiver android:name=".Test_Receiver" > <intent-filter> <action android:name="android.intent.action.sss" /> </intent-filter> </receiver> |
類文件裏面的代碼:
Intent intent = new Intent(); intent.setAction("android.intent.action.sss"); Test_BCActivity.this.sendBroadcast(intent); |
另一個是代碼註冊:
綁定receiver
publicstaticfinal String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"; // 生成一個receiver對象 receiver = new Test_Receiver(); // 生成一個filter對象 IntentFilter intentFilter = new IntentFilter(); // 爲filter添加一個action intentFilter.addAction(SMS_RECEIVED_ACTION); Test_BCActivity.this.registerReceiver(receiver, intentFilter); |
解除綁定receiver
Test_BCActivity.this.unregisterReceiver(receiver); |
兩者的主要區別是,xml文件中註冊的廣播機制,在應用程序關閉之後,依然運行。一直運行。通過代碼註冊的廣播是在應用程序關閉之後是關閉的,及時生效。
關於receiver類的代碼
publicclass Test_Receiver extends BroadcastReceiver { public Test_Receiver() { Log.d("Test_Receiver", "構造函數"); } @Override publicvoid onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.d("Test_Receiver", "OnReceive"); } } |