详解Android中BroadCastReceiver组件

2019-12-10 18:57:11王旭

(1)接下里我们就通过“动态注册”的方式使用:

 private MyBroadcastReceiver receiver = new MyBroadcastReceiver();
    IntentFilter filter = new IntentFilter();
    filter.addAction(BmobConstants.ACTION_REGISTER_SUCCESS_FINISH); //添加action
    registerReceiver(receiver, filter); //注册

(2)静态注册的话是现在清单文件中添加:

<receiver android:name=".MyBroadcastReceiver"> 
      <intent-filter> 
        <action android:name="register.success.finish"/> 
        <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
    </receiver> 

(2-1)我们就可以使用代码了:

Intent intent = new Intent("register.success.finish"); 
intent.putExtra("msg", "hello receiver."); 
sendBroadcast(intent); //发送广播

普通广播(Normal Broadcast)

普通广播对于多个接收者来说是完全异步的,通常每个接收者都无需等待即可以接收到广播,接收者相互之间不会有影响。对于这种广播,接收者无法终止广播,即无法阻止其他接收者的接收动作。为了验证以上论断,我们新建三个BroadcastReceiver,演示一下这个过程,FirstReceiver、SecondReceiver和ThirdReceiver的代码如下:

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class FirstReceiver extends BroadcastReceiver { 

  private static final String TAG = "NormalBroadcast"; 

  @Override 
  public void onReceive(Context context, Intent intent) { 
    String msg = intent.getStringExtra("msg"); 
    Log.i(TAG, "FirstReceiver: " + msg); 
  } 
}