BroadcastReceiver是Android四大组件之一,主要用于接收系统广播和其他应用程序的广播。
BroadcastReceiver的使用非常简单
写一个类继承BroadcastReceiver
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//主线程 10s ANR
Log.i("MyReceiver", "收到了" + intent.getAction());
}
}
注意onReceive是主线程不要做耗时操作否则阻塞10s会ANR
注册广播(静态注册)
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="kt.com.MyReceiver"/>
</intent-filter>
</receiver>
动态注册
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("kt.com.MyReceiver");
registerReceiver(new MyReceiver(),intentFilter);
动态注册的广播一定要再适当的时机调用 unregisterReceiver();解除注册。
发送广播
Intent intent = new Intent();
intent.setAction("kt.com.MyReceiver");
sendBroadcast(intent);
两种注册方式的区别
1.动态注册的广播是非常驻型广播,此时广播是跟随宿主的生命周期的,宿主不在了广播也就不在了。
2.静态注册的广播是常驻型广播,即应用程序关闭后,依然能够收到广播。
网友评论