最简单形式:
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();