Android四大組件之BroadcastReceiver(廣播)簡單總結

1.靜態註冊廣播

  • 通過嚮導新建一個BroadcastReceiver
  • 在清單文件的註冊信息中添加intent
<receiver
            android:name=".broad.MyReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.com.broad.myreceiver"/>
            </intent-filter>
        </receiver>
  • 在主函數中發佈廣播:
bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it=new Intent("android.com.broad.myreceiver");
//                it.setAction("android.com.broad.myreceiver");
                sendBroadcast(it);
            }
        });
  • 廣播最多支持10s,不能寫耗時的操作,一般都要交給service去幹

2.設置開機廣播並啓動服務
- 開機廣播:

<action android:name="android.intent.action.BOOT_COMPLETED" />
  • 需要加權限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
  • 可以將廣播設置如下:
public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("====","已經收到開機廣播");
        Intent it=new Intent(context, BroadService.class);
        context.startService(it);
    }
}
  • 然後就可以開機啓動該服務:
====: 已經收到開機廣播
====: 開機運行服務

3.動態註冊廣播(只能在程序裏用,不能跨程序)–消息傳遞機制

  • 新建一個class:
public class DyBroadcast extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("====","接收到動態註冊的廣播");
    }
}
  • 在Activity中進行動態註冊:
DyBroadcast dyBroadcast=new DyBroadcast();
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction("com.my.first.broadcast");
        registerReceiver(dyBroadcast,intentFilter);
  • 發送廣播:
bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent("com.my.first.broadcast");
                sendBroadcast(intent);
            }
        });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章