Android中BroadCast与Activity之间的通信

在看本文之前,如果你对于Android的广播机制不是很了解,建议先行阅读我转载的一篇博文:图解
Android 广播机制

由于本案例比较简单,故直接在此贴出代码,不做过多的阐述。

先上效果截图:

MainActivity的代码如下:

package com.gc.testbroadcasedemo;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
/**
 *
 * @author Android将军
 *
 */
public class MainActivity extends Activity {
	private Button mButton;
	private TextView mTextView;
	public static String ACTION_INTENT_TEST = "com.gc.broadcase.test";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mTextView = (TextView) findViewById(R.id.message_tv);
		mButton = (Button) findViewById(R.id.send_btn);
		mButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent mIntent = new Intent(ACTION_INTENT_TEST);
				sendBroadcast(mIntent);
			}
		});
		registerMessageReceiver();
	}
	//在销毁时要与广播解绑
	@Override
	protected void onDestroy() {
		unregisterReceiver(mMessageReceiver);
		super.onDestroy();
	}

	public MessageReceiver mMessageReceiver;
	public static String ACTION_INTENT_RECEIVER = "com.gc.broadcast.receiver";

	/**
	 * 动态注册广播
	 */
	public void registerMessageReceiver() {
		mMessageReceiver = new MessageReceiver();
		IntentFilter filter = new IntentFilter();

		filter.addAction(ACTION_INTENT_RECEIVER);
		registerReceiver(mMessageReceiver, filter);
	}

	public class MessageReceiver extends BroadcastReceiver {

		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			if (intent.getAction().equals(ACTION_INTENT_RECEIVER)) {
				mTextView.setText(intent.getStringExtra("message"));
			}
		}

	}
}

MyBroadCast的代码如下:

package com.gc.testbroadcasedemo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
/**
 *
 * @author Android将军
 *
 */
public class MyBroadCast extends BroadcastReceiver{

	public MyBroadCast()
	{
		Log.v("BROADCAST_TAG", "MyBroadCast");
	}
	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		Log.v("BROADCAST_TAG", "onReceive");
		Bundle bundle = intent.getExtras();
		if(intent.getAction().equals(MainActivity.ACTION_INTENT_TEST))
		{
			processCustomMessage(context, bundle);
		}
	}
	//send msg to MainActivity
		private void processCustomMessage(Context context, Bundle bundle) {

				Intent mIntent=new Intent(MainActivity.ACTION_INTENT_RECEIVER);
				mIntent.putExtra("message", "测试Broadcast与Activity之间的通信");
				context.sendBroadcast(mIntent);

		}

}

案例工程目录如下:

在AndroidManifest中静态注册MyBroadCast广播,代码如下:

 <receiver android:name=".MyBroadCast">
            <intent-filter >
                <action android:name="com.gc.broadcase.test"/>
            </intent-filter>
        </receiver>

转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/39928243

时间: 2024-10-06 21:21:43

Android中BroadCast与Activity之间的通信的相关文章

android中fragment和activity之间相互通信

在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信.下面就来记录一下activity和fragment之间 通过实现接口来互相通信的方法. 1. activity 向fragment发出通信,就这么写: private OnMainListener mainListener; // 绑定接口 @Override public void onAttachFragment(Fragmentfragment) { try { mainListener =

Android中两个Activity之间简单通信

在Android中,一个界面被称为一个activity,在两个界面之间通信,采用的是使用一个中间传话者(即Intent类)的模式,而不是直接通信. 下面演示如何实现两个activity之间的通信. 信息的发起者为Test,接收者为Target,代码如下: Test类: 1 package com.example.testsend; 2 3 import android.content.Intent; 4 import android.support.v7.app.AppCompatActivit

android中fragment与activity之间通信原理以及例子

参考文章 http://blog.csdn.net/guozh/article/details/25327685#comments Activity和fragment通信方式一般有3种方法 1.在fragment中定义接口, Activity去实现接口--->查看上面的参考文章 2.使用广播机制 3.使用EventBus 这3种方式 推荐使用EventBus 下面介绍第2种方式广播通信机制: 首先MainActivity中引入一个fragment, activity的布局很简单,里面只有一个 f

Android中Fragment和Activity之间的互操作代码例子

摘要 本文介绍了Android中一个Activity中有多个Fragment的情况下,Fragment之间如何通过Activity进行互操作. 源代码 源代码地址为:http://download.csdn.net/detail/logicteamleader/8931199 源代码使用ADT编写,ADT版本为2014,Android版本为android-22. 技术要点 1.在Activity中的多个Fragment之间要互操作,一定要通过此Activity,不能直接通信: 2.在Activi

Android中Fragment与Activity之间的交互(两种实现方式)

(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的. 我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的. Fragment与

Android中Intent在Activity之间传递对象[Serializable或Parcelable]

使用intent启动activity /** * Serializeable传递对象的方法 */ private void SerializeMethod(){ Person mPerson = new Person(); mPerson.setName("andy"); mPerson.setAge(26); Intent mIntent = new Intent(this,SerializableDemo.class); Bundle mBundle = new Bundle();

Android——Fragment和Activity之间的通信+Frangment生命周期

Android--Fragment和Activity之间的通信+Frangment生命周期 Fr'agment和Activity之间的通信 1.在Fragment中声明一个接口. 2.在Activity中实现在Fargment中声明的接口. 3.在Fragment中声明一个接口对象. 4.在Frangment的生命周期Onattach方法中判断当前Activity是否实现了此Fragment中声明的接口.如果已实现,就把当前Activity转换成接口对象. 5.调用Activity中实现的方法=

android 中View, Window, Activity, WindowManager,ViewRoot几者之间的关系

(1)View:最基本的UI组件,表示屏幕上的一个矩形区域. (2)Window: 表示一个窗口,不一定有屏幕那么大,可以很大也可以很小: 它包含一个View tree和窗口的layout 参数. View tree的root View可以通过getDecorView得到.还可以设置Window的Content View. (3)Activity:Activity包含一个Window,该Window在Activity的attach方法中通过调用 PolicyManager.makeNewWind

Fragment的生命周期和Activity之间的通信以及使用

Fragment通俗来讲就是碎片,不能单独存在,意思就是说必须依附于Activity,一般来说有两种方式把Fragment加到Activity,分为静态,动态. 静态即为右键单击,建立一个Fragment,选择Blank,在Activity布局中直接加fragment,name属性直接指向之前建立的Fragment,这就添加上了Fragment,这种较为简单. 动态: 我们要做的是在Activity中添加一个Fragment,Fragment中有两个按钮,当按下按钮时分别切换不同的Fragmen