作为android 中的四大组建之一的广播,他的作用还是很大的, 他可以跨进程通信,跨线程通信,有没有占用ui,所以开发中是一个很好的工具。下面就简单介绍一下广播机制,广播分为动态的广播和静态的广播
静态的广播需要在mainfesf文件中注册,动态的广播需要代码注册,
<receiver android:name=".TestBradCast"> <intent-filter> <action android:name="com.testBroadcastReceiver.Internal_2" /> </intent-filter>
而动态的广播需要代码注册
IntentFilter myIntentFilter = new IntentFilter(); myIntentFilter.addAction(ACTION_NAME); //注册广播 registerReceiver(mBroadcastReceiver, myIntentFilter);
下面贴上完整的代码
public class MainActivity extends AppCompatActivity { private final String ACTION_NAME = "发送广播"; private Button mBtnMsgEvent, mBtnMsgChange; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //注册广播 registerBoradcastReceiver(); LinearLayout mLinearLayout = new LinearLayout(this); mBtnMsgEvent = new Button(this); mBtnMsgEvent.setText("动态的广播"); mLinearLayout.addView(mBtnMsgEvent); mBtnMsgChange = new Button(this); mBtnMsgChange.setText("静态的广播"); mLinearLayout.addView(mBtnMsgChange); setContentView(mLinearLayout); mBtnMsgChange.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction("com.testBroadcastReceiver.Internal_2"); sendBroadcast(intent); } }); mBtnMsgEvent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent mIntent = new Intent(ACTION_NAME); mIntent.putExtra("yaner", "发送广播,相当于在这里传送数据"); //发送广播 sendBroadcast(mIntent); } }); } private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ACTION_NAME)) { Toast.makeText(MainActivity.this, "处理action名字相对应的广播", Toast.LENGTH_SHORT).show(); } } }; public void registerBoradcastReceiver() { IntentFilter myIntentFilter = new IntentFilter(); myIntentFilter.addAction(ACTION_NAME); //注册广播 registerReceiver(mBroadcastReceiver, myIntentFilter); } }
我们建一个广播接受者的类
public class TestBradCast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"广播",Toast.LENGTH_SHORT).show(); } }
上面就是完整的代码。