最简单形式:
manifest:
<receiver android:name=".MyReceiver" android:enabled="true" android:exported="false"></receiver>mainactivity:
case R.id.btn: sendBroadcast(new Intent(this,MyReceiver.class)); break;myreceiver:
@Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving // an Intent broadcast. // throw new UnsupportedOperationException("Not yet implemented"); System.out.println("receive new msg"); }在activity中控制receiver的创建和销毁:
首先在manifest中注释掉receiver。
在receiver中定义:
public static final String ACTION="com.example.jowang.learnbroadcastreceiver.intent.action.MyReceiver";
mainactivity:
@Override public void onClick(View view) { switch (view.getId()){ case R.id.btn: sendBroadcast(new Intent(MyReceiver.ACTION));//隐式intent break; case R.id.btnreg: if (receiver==null){ receiver=new MyReceiver(); registerReceiver(receiver,new IntentFilter(MyReceiver.ACTION)); } break; case R.id.btncan: if (receiver!=null){ unregisterReceiver(receiver); receiver=null; } break; } } private MyReceiver receiver=null;优先级 在intentfilter中设置priority数值越大,优先级越高
阻止信息继续传递:activity中:sendorderedbroadcast(intent,null)
receiver的onreceive中:abortbroadcast();