关于使用handler与BroadcastReceiver机制来处理动态改变U线程组件
来源:互联网 发布:马自达睿翼轮毂数据 编辑:程序博客网 时间:2024/06/06 02:55
当在同一个Activity中的一些操作会改变这个Activity上的组件显示,可以在这个UI线程(Activity)上设置handler并重写handleMessage()方法来处理消息,并在这个Activity上重开一个线程new Thread()来进行消息Message的发送,以此来触发UI线程上的handler,达到改变UI组件的目的。
当ActivityA上的组件会因为ActivityB上的操作而发生改变时候,使用Broadcast机制来实现UI变化的触发会比handler&Message更方便。具体例子见例子:
转载自: http://blog.csdn.net/jason0539/article/details/18075293
就是在MainActivity里面打开AnotherActivity去执行一些操作,相应的改变MainActivity里的一些布局或者执行一些动作,最开始想到的就是把MainActivity的Handler直接传给AnotherActivity,好像不可行,就有了这篇和上一篇文章。
上一篇方案一是通过重写application来在两个activity之间共享Handler的,今天这个方案是通过广播机制解决本来想要通过传递handler来实现的功能,算是Activity之间传递Handler问题的变通方案,
其实很简单,就是Broadcast的应用,替换了原来想要通过共享handler解决的思路。
代码如下:
MainActivity:
- package jason.broadcastinsteadofhanlderdemo;
- 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;
- public class MainActivity extends Activity {
- TextView textView;
- Button sButton;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- textView = (TextView) findViewById(R.id.show);
- sButton = (Button) findViewById(R.id.startAnother);
- sButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- startActivity(new Intent(MainActivity.this,AnotherActivity.class));
- }
- });
- IntentFilter filter = new IntentFilter(AnotherActivity.action);
- registerReceiver(broadcastReceiver, filter);
- }
- BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- textView.setText(intent.getExtras().getString("data"));
- }
- };
- protected void onDestroy() {
- unregisterReceiver(broadcastReceiver);
- };
- }
AnotherActivity:
- package jason.broadcastinsteadofhanlderdemo;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class AnotherActivity extends Activity {
- public static final String action = "jason.broadcast.action";
- Button update;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.another);
- update = (Button) findViewById(R.id.updateMain);
- update.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Intent intent = new Intent(action);
- intent.putExtra("data", "yes i am data");
- sendBroadcast(intent);
- finish();
- }
- });
- }
- }
0 0
- 关于使用handler与BroadcastReceiver机制来处理动态改变U线程组件
- 关于Handler和BroadcastReceiver的联合使用
- 使用Handler处理线程通信
- BroadcastReceiver组件 动态注册
- 关于android Handler进行线程处理消息队列与线程队列线程无法停止的问题
- 关于UI线程与非UI线程交互,有关Handler机制等(一)
- 关于 Android 异步消息处理机制 Handler
- Android应用开发学习笔记之多线程与Handler消息处理机制
- 【Android开发】线程与消息处理-Handler消息传递机制之Looper
- 关于广播机制BroadcastReceiver
- 使用handler来实现异步处理
- 关于Handler处理UI线程的更新及Handler译文
- BroadcastReceiver组件的使用
- android handler的用法与处理机制
- Android 四大组件之(3)BroadcastReceiver广播事件处理以及与Notification的配合使用详解
- 关于使用属性动画来动态改变控件的布局位置
- 关于androidUI线程更新与Handler
- Android之多线程----异步消息处理机制之Handler详解
- 机器学习案例-Quora
- Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- 【转载】用cx_Freeze把Python代码打包成单个独立的exe可执行文件
- 齐一万物,莫强分别
- Linux Vim 基本操作
- 关于使用handler与BroadcastReceiver机制来处理动态改变U线程组件
- 读书笔记之计算机系统(3)
- 关于matlab中get和set的用法 (2)
- android studio使用中遇到的问题记录
- 真人行世,入火不热,沉水不溺
- SQL Server 建立连接时出现与网络相关的或特定于实例的错误
- Android学习之Bitmap对象与字节数组相互转换
- 零基础学python-7.1 python中的字符串简介与常用函数
- 回收站linux实现