Android学习笔记-广播机制

Android广播类似QT中的信号和槽~~~

界面文件activity_main.xml

   <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/send1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView1"
        android:text="send 1" />
    
    <Button
        android:id="@+id/send2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/send1"
        android:text="send 2" />

MainActivity.java

public class MainActivity extends Activity {
	public static final String ACTION_1 = "send1~~~";
	public static final String ACTION_2 = "send2~~~~~~";
	private BroadcastReceiver receiver;
	private TextView textView = null;
	private Button button1 = null;
	private Button button2 = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		textView = (TextView) findViewById(R.id.textView1);
		textView.setText("");
		button1 = (Button) findViewById(R.id.send1);
		button2 = (Button) findViewById(R.id.send2);

		initView();
		receiver = new BroadcastReceiver() {

			@Override
			public void onReceive(Context context, Intent intent) {
				String action = intent.getAction();
				String data = intent.getExtras().getString("data");
				if (action.equals(ACTION_1)) {
					textView.setText("");
					textView.setText("接收到:\n" + ACTION_1 + "\n1内容是:" + data);
				} else if (action.equals(ACTION_2)) {
					textView.setText("");
					textView.setText("接收到:\n" + ACTION_2 + "\n2内容是:" + data);
				}
			}

		};
		IntentFilter filter = new IntentFilter();
		filter.addAction(ACTION_1);
		filter.addAction(ACTION_2);
		registerReceiver(receiver, filter);
	}

	public void initView() {
		OnClickListener onClickListener = new OnClickListener() {

			@Override
			public void onClick(View v) {
				int id = v.getId();
				switch (id) {
				case R.id.send1:
					Intent intent1 = new Intent(ACTION_1);
					intent1.putExtra("data", "action_01");
					sendBroadcast(intent1);
					break;
				case R.id.send2:
					Intent intent2 = new Intent(ACTION_2);
					intent2.putExtra("data", "action_02");
					sendBroadcast(intent2);
					break;
				default:
					break;
				}
			}
		};
		button1.setOnClickListener(onClickListener);
		button2.setOnClickListener(onClickListener);
	}

	@Override
	protected void onStop() {
		super.onStop();
		unregisterReceiver(receiver);//解除注册
	}
}



本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1581613

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。