`
knight_black_bob
  • 浏览: 850316 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android handle ui 更新

阅读更多

 

  /** handler更新数据标志 */
    protected static final int MSG_UPDATE_DATA                  = 2;
    protected static final int MSG_INSERT_DB                    = 0;

 

 

public void downloadData() {
        updateUIThread( MSG_UPDATE_DATA );
        mListView.refreshSelf();
    }

 

 public void updateUIThread( final int type ) {
        new Thread( new Runnable() {
            @Override
            public void run() {
                mUIhandler.sendEmptyMessage( type );
            }
        } ).start();
    }

 

 /** 刷新UI handler */
   private Handler  mUIhandler    = new Handler() {
	    public void handleMessage(  android.os.Message msg ) {
		switch ( msg.what ) {
		    case MSG_UPDATE_DATA:
			updateListView( ( List<TaskReceiveRspJson> ) TaskDbManager .getData( TaskDbManager.TABLE_TASK_RECEIVE, mQueryByState ) );
			break;
		     default:
			 break;

	}
    };
};

 

 

 

 

 

 

 

 

 

 

 

 

 

handler 处理方法

消息处理代码:
    private Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case 1 :
                bt.setText("正在下载...");
                break;
            case 2 :
                Bitmap bm = (Bitmap) msg.obj;
                iv.setImageBitmap(bm);
                break;
            case 3 :
                Bundle bundle = msg.getData();
                String data = bundle.getString("text");
                bt.setText(data);
                break;
        }
    }
};

消息发送代码:
方式一:
示例1: 
Message.obtain(handler,1).sendToTarget();

示例2: 
Bitmap bm = NetUtil.downloadNewImg(); 
Message.obtain(handler, 2, bm).sendToTarget();

示例3: 
// 这条消息,不携带数据,而是携带一段代码, 主线程处理这条消息时,会执行它携带的代码,而不执行其他代码
Message.obtain(handler, new Runnable() {
    public void run() {
        bt.setText("下载内涵图");

    }
}).sendToTarget();
方式二:

示例1: 
handler.obtainMessage(1).sendToTarget();

示例2: 
Bitmap bm = NetUtil.downloadNewImg(); 
handler.obtainMessage(2, bm).sendToTarget(); 

方式三:
示例1: 
Message msg = new Message(); 
msg.what =1; 
handler.sendMessage(msg);

示例2: 
Message msg = new Message(); 
msg.what =2; 
msg.obj = bm; 
handler.sendMessage(msg);

示例3: 
Message msg = new Message(); 
Bundle data = new Bundle(); 
data.putString("text", "正在下载..."); 
msg.what = 3; 

msg.setData(data); 
handler.sendMessage(msg);

示例4:
// 创建一个携带代码的消息对象,并发送给主线程执行
handler.post(new Runnable() {
    public void run() {
        // 在主线程中,处理消息时执行
        Toast.makeText(
                MainActivity.this, "下载结束", 
                Toast.LENGTH_SHORT).show();
    }
});

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

分享到:
评论

相关推荐

    android handle线程数据传递 源代码

    本文将深入探讨Android多线程中的数据传递以及如何通过Handle实现UI更新。 首先,我们了解下Android线程的基本概念。Android应用主要运行在主线程,也称为UI线程,负责处理用户交互和更新UI。由于主线程不允许执行...

    使用Handler实现异步更新UI例子

    在Android应用开发中,UI(用户界面)的更新必须在主线程中进行,因为这是Android系统规定的,以保证用户界面的流畅性。然而,当执行耗时操作如网络请求、数据库操作等时,如果在主线程中进行,将导致应用程序无响应...

    java 手写实现 Android Handle 机制

    首先,我们需要理解Android的主线程,也被称为UI线程,它是负责处理用户交互和更新界面的线程。当需要在后台执行耗时任务时,我们通常会创建新的工作线程。然而,这些工作线程不能直接修改UI,因为这可能会导致线程...

    Android handle传值Demo

    "Android handle传值Demo"就是这样一个实例,它展示了如何使用Handler和Bundle来实现在后台线程与主线程之间的数据传递。 首先,让我们了解下Handle(处理者)的概念。在Android中,主线程(UI线程)负责处理用户...

    android demo,实现主线程handle,工作子线程threadHandle的处理

    本示例“android demo,实现主线程handle,工作子线程threadHandle的处理”专注于如何在主线程和子线程之间有效地进行通信。下面将详细讲解这个知识点。 1. 主线程(UI线程): 在Android中,主线程负责处理用户...

    Android中UI设计的一些技巧

    在Android开发中,UI设计是一项至关重要的工作,它直接影响着应用的用户体验。良好的UI设计不仅能够提升产品的美观性,还能够改善用户的操作体验,使得应用界面更加直观和易用。以下将详细介绍Android中UI设计的一些...

    Android-Handle-Thread.rar_android_handle thread

    在Android应用开发中,线程(Thread)和Handler是两个至关重要的概念,它们共同负责处理应用程序的多任务执行和UI更新。本资料“Android-Handle-Thread.rar”着重讲解了如何在Android环境中有效地管理和同步线程,...

    android demo,主线程handle

    在Android开发中,`主线程`(也称为UI线程)是应用程序的入口点,负责处理用户交互和更新用户界面。`Handle` 和 `Runnable` 是Android多线程编程中的重要概念,它们允许开发者在不同的线程之间同步数据和执行任务。`...

    Android Handle Thread.docx

    本文主要探讨了Android的进程和线程模型,以及如何在多线程环境下有效地更新UI。 首先,我们来看Android的进程机制。Android应用在启动时会创建一个LINUX进程和一个主线程,所有组件都在这个进程中运行。Android对...

    安卓学习之handle的使用方法

    在 Android 开发中,Handle 是一个关键的组件,它主要用于在不同的线程之间进行通信,特别是在 UI 线程和后台线程之间。Handle 的主要作用是解决 Android 应用程序中的多线程问题,确保耗时的操作不会阻塞主线程,...

    Android开发—AndroidUI设计技巧.pdf

    Android UI 设计技巧 Android UI 设计技巧是 Android 开发中的一个重要方面,它直接影响到用户体验。本文将分享 Android 中 UI 设计的一些技巧,包括按钮的 UI 设计和 ListView 以及 GridView 的 UI 设计。 按钮的...

    android开发教程之handler异步更新ui

    开发者可以通过创建`Handler`实例、定义`Runnable`并使用`post()`或`postDelayed()`来安排UI更新,或者直接在子线程中调用`postInvalidate()`来触发视图的重绘。在实际项目中,这种异步更新UI的方法非常常见,也是...

    Android UI开发——SlidingDrawer 抽屉效果

    在Android应用开发中,UI设计是至关重要的一个环节,它直接影响到用户体验。今天我们要讨论的是一个经典的Android UI组件——SlidingDrawer,它提供了一种抽屉式的交互效果,常用于隐藏和显示额外的信息或者功能区域...

    Android_Handle_Thread

    本文将深入探讨 Android 线程的管理以及如何在多线程环境中更新 UI。 首先,让我们了解 Android 的进程模型。Android 系统为每个应用程序分配一个独立的 Linux 进程和主线程。进程的重要性分为五个等级:前台进程、...

    Android消息机制Handler的工作过程详解

    总结总结 Android的消息机制Handler是线程间通信的关键工具,它允许开发者在后台线程执行耗时操作,而将UI更新交由主线程处理,保证了UI操作的安全性和性能。理解Handler、Looper和MessageQueue的工作原理以及它们...

    android中Handle类的用法实例分析

    在Android开发中,Handle类是实现线程间通信和异步处理的核心工具。它与Looper、Message紧密配合,使得在主线程(UI线程)和工作线程之间能有效地传递消息,进而解决长时间运行任务导致的UI卡顿问题。下面我们将深入...

    handler加线程模式实现android应用的异步加载

    - **Post模式**:使用`Handler.post(Runnable)`,Runnable将在主线程的Looper中执行,适合用于轻量级的UI更新。 - **Message模式**:使用`Handler.sendMessage(Message)`,Message中可以携带数据,适合于复杂的...

    Android Handler运行原理

    // 更新UI break; default: super.handleMessage(msg); } } ``` #### 四、总结 通过以上分析,我们可以看出Android中Handler机制的核心在于利用Looper、MessageQueue和Handler三个核心组件,实现了线程间的...

    android demo,test印_handle_message_obtainMessage,消息处理和函数名和行号的打

    `handle_message_obtainMessage`这个主题涉及到的是Android中的Handler机制,它允许开发者在不同线程之间传递消息,并在特定线程(通常是UI线程)中执行回调。下面我们将深入探讨这个知识点。 首先,`Handler`是...

    UI开发第九篇——SlidingDrawer 抽屉效果

    在Android UI开发中,SlidingDrawer是一个非常实用的组件,它允许开发者实现类似抽屉的交互效果,常见于导航栏或者设置菜单等场景。自SDK 1.5版本开始引入,SlidingDrawer提供了水平和垂直两种展开方式,使得用户...

Global site tag (gtag.js) - Google Analytics