Android 广播的传递和接受 动态注册 基本用法

这篇文章主要给小白看的,大神沉默就好

很多小白都知道用广播,可是用的时候始终出现这样那样的问题,这篇博客很好的为大家解释了:

直接上代码:布局我就写了 一个Button  一个TextView

package com.example.demo;

import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {
	private String ACTION = "action";// 广播的标识
	private TextView tv;
	private Button bt;
	private MyBroadCastRecevir recevir;

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

	private void iniView() {
		recevir = new MyBroadCastRecevir();
		tv = (TextView) findViewById(R.id.change);
		bt = (Button) findViewById(R.id.button);
		bt.setOnClickListener(this);
		regs();
	}

	/**
	 * 点击事件
	 */
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.button:
			// 发送广播
			Intent i = new Intent(ACTION);
			// 传值 -->键值对
			i.putExtra("value", "接受成功");
			// 发送
			sendBroadcast(i);
			break;
		default:
			break;
		}
	}

	/**
	 * 广播的接受
	 * 
	 * @author Administrator
	 * 
	 */
	private class MyBroadCastRecevir extends BroadcastReceiver {

		@Override
		public void onReceive(Context context, Intent intent) {
			String s = intent.getStringExtra("value");
			tv.setText(s);
		}
	}

	// 销毁广播
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		unregisterReceiver(recevir);
	}

	// 动态注册
	private void regs() {
		IntentFilter iFilter = new IntentFilter(ACTION);
		registerReceiver(recevir, iFilter);
	}
}

有没有很详细简单,给个好评吧

你可能感兴趣的:(安卓类)