BroadcastReceiver的兩種注冊(cè)方式

第一種:代碼注冊(cè)

public? class? BroadcastActivity? extends? AppCompatActivity {

private final String ACTION_BOOT = "com.example.broadcasttest.MY_BROADCAST";

private IntentFilter? intentFilter;

private MyReceiver? myReceiver;

@Override

?protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_broadcast);

intentFilter=new IntentFilter();

intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

myReceiver=new MyReceiver();

registerReceiver(networkChangeReceiver,intentFilter);

}

private class MyReceiver extends BroadcastReceiver {

@Override

? ? ? ? public void onReceive(Context context, Intent intent) {

? ? ? ? ? //接收后的處理

? ? ? ? ? if(ACTION_BOOT.equals(intent.getAction())){

? ? ? ? ? Toast.makeText(context, "收到來(lái)自某個(gè)類發(fā)送的廣播",Toast.LENGTH_SHORT).show();

? ? ? ? }

}

@Override

? ? protected void onDestroy() {

super.onDestroy();

//代碼注冊(cè)廣播要手動(dòng)銷毀

unregisterReceiver(myReceiver);

}

}

第二種:在AndroidManifest.xml中注冊(cè)

<application>

?<receiver android:name=". MyReceiver " >

?<intent-filter>

?<action android:name="com.example.broadcasttest.MY_BROADCAST"/>

?</intent-filter>

?</receiver>

</application>

區(qū)別:在AndroidManifest.xml中注冊(cè)廣播一旦應(yīng)用程序被安裝到手機(jī)無(wú)論程序是否處于活動(dòng)狀態(tài)都會(huì)進(jìn)行監(jiān)聽(tīng);使用代碼進(jìn)行注冊(cè)當(dāng)應(yīng)用程序被關(guān)閉后就不在監(jiān)聽(tīng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。