Android中BroadCast与Activity之间的通信
在看本文之前,假设你对于Android的广播机制不是非常了解。建议先行阅读我转载的一篇博文:图解
Android 广播机制。
因为本案例比較简单,故直接在此贴出代码,不做过多的阐述。
先上效果截图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW5kcm9pZF9qaWFuZ2p1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="200" height="200" alt="">
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); } }
案例project文件夹例如以下:
在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
Android中BroadCast与Activity之间的通信的更多相关文章
- Android中两个Activity之间简单通信
在Android中,一个界面被称为一个activity,在两个界面之间通信,采用的是使用一个中间传话者(即Intent类)的模式,而不是直接通信. 下面演示如何实现两个activity之间的通信. 信 ...
- Android中Service和Activity之间的通信
启动Service并传递数据进去: Android中通过Intent来启动服务会传递一个Intent过去. 可以在Intent中通过putExtra()携带数据 Intent startIntent ...
- android中fragment与activity之间通信原理以及例子
参考文章 http://blog.csdn.net/guozh/article/details/25327685#comments Activity和fragment通信方式一般有3种方法 1.在fr ...
- Android中Fragment与Activity之间的交互(两种实现方式)
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...
- Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Android(Fragment和Activity之间通信)
Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现. 一.Acti ...
- 【Android 应用开发】Activity生命周期 与 Activity 之间的通信
一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...
- Fragment的生命周期和Activity之间的通信以及使用
Fragment通俗来讲就是碎片,不能单独存在,意思就是说必须依附于Activity,一般来说有两种方式把Fragment加到Activity,分为静态,动态. 静态即为右键单击,建立一个Fragme ...
- Fragmen和Activity之间的通信--接口和实现的分离(转)
Fragmen和Activity之间的通信--接口和实现的分离(转) 分类: Android平台 在平板的开发过程中通常都会采用多个Fragment的实现方式,通常有一个为list的Fragm ...
随机推荐
- EF code first 生成edmx文件
通过下面的代码,你就可以拿到EF心中的地图 —— edmx文件. using (var context = new Context()) { XmlWriterSettings settings = ...
- Html.RenderAction简单用法
一 Html.ActionLink("actionName") 调用页与当前页位于同一个控制器,可直接调用,显示对应的视图 二 Html.ActionLink("acti ...
- NYOJ737
题意:给n堆石子,按照顺序排列,只能相邻两堆石子合并,求最后合并为一堆时所花费的最小代价,石子合并代价为两堆石子之和. 输入: n(石子堆数) Xi(每堆石子个数) 输出: T(最小代价) 思路:经典 ...
- 问题: Type mismatch in key from map: expected org.apache.hadoop.io.Text, recieved org.apache.hadoop.io.LongWritable 解决方案
在Job中添加相应的输入类型,例如: job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.clas ...
- CAGradientLayer实现色差动画
效果图: 代码部分: RPGradientAnimationView.h #import <UIKit/UIKit.h> typedef enum : NSUInteger { RPGra ...
- mysql数据表如何导入MSSQL中
本案例演示所用系统是windows server 2012.其它版本windows操作系统类似. 1,首先需要下载mysql odbc安装包. http://dev.mysql.com/downloa ...
- Quartz.net使用记录
1.引入dll文件: nuget控制台:安装quartz:Install-Package Quartz 安装log4net:Install-Package log4net,这里使用log4net记录一 ...
- C#数组反转
static void Main(string[] arr) { string[] names = { "老杨1", "老李2", "老王3" ...
- C#数组的使用
//计算数组中最大值,最小值,平均值和总和 //类中main最先执行 static void Main(string[] args) { //声明一个数组,数组长度一定固定就不能更改了 , , , , ...
- QT5-控件-QProgressBar-进度条-用来做下载进度,文件读取进度还不错
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QProgressBar> ...