您的位置:首页 > 移动开发 > Android开发

Android中BroadCast与Activity之间的通信

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

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

先上效果截图:





MainActivity的代码如下:

[java] view
plain copy

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的代码如下:

[java] view
plain copy

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广播,代码如下:

[html] view
plain copy

<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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: