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);
}
});