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
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
相关文章推荐
- Android修改浏览器书签和主页
- Android中根据出生年月计算生日剩余天数
- import github project As Android Project In Eclipse
- android Rx 技术
- 开发中碰到的问题:The method getSystemService(String) is undefined for the type CourseFragment
- ScrollView嵌套Linearlayout显示不全的解决办法
- android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注
- Android 开发笔记
- rxandroid结合retrofit2发送post请求
- android发送短信、会话列表、短信详情
- Android:Android官方培训课程中文版(v0.9.4)
- android教程之textview解析带图片的html示例
- Android 5.x 权限问题解决方法
- Android View的测量
- Android 数据上传(上传图片的时候同时上传图片名,拍照时间之类的)
- android---Activity间消息互传
- Android setContentView方法解析(二)
- cordova开发介绍(android平台)
- android开发之路08(ListView&Adapter)
- android studio 中R文件丢失报错问题