借鉴自第一行
动态注册
public class MainActivity extends AppCompatActivity { private static final String TAG = "xbh"; private IntentFilter intentFilter; private NetworkChangeReceiver networkChangeReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ViewGroup root = (ViewGroup) LayoutInflater.from(this).inflate(R.layout.activity_main, null, false); setContentView(root); intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); networkChangeReceiver = new NetworkChangeReceiver(); registerReceiver(networkChangeReceiver, intentFilter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(networkChangeReceiver); } class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { } } }
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>监听了网络。IntentFilter中的action是我们想监听的广播。要记得取消注册。
静态注册
动态注册很灵活,但是程序启动之后才能接受到广播。这个时候可以用静态注册。
新建一个BroadcastReceiver
<receiver android:name=".BootCompleteReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> intent-filter> receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>这样就可以监听到开机了。
区别就是一个在app前,一个在app后。
注意,广播接收器不允许开线程,所以他扮演一个打开其他组件的角色。
如对本文有疑问, 点击进行留言回复!!
网友评论