美文网首页
广播两种注册方式的区别

广播两种注册方式的区别

作者: simit | 来源:发表于2018-11-08 16:48 被阅读0次

    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.静态注册的广播是常驻型广播,即应用程序关闭后,依然能够收到广播。

    相关文章

      网友评论

          本文标题:广播两种注册方式的区别

          本文链接:https://www.haomeiwen.com/subject/nilwxqtx.html