`

handler异步更新UI

 
阅读更多

废话少说,直接进入代码

package com.pms.myhandle;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;

public class MyHandle extends Activity {

private ImageView iv;
int what = 0;

//创建Handle对象
private Handler handler = new Handler(){

//实现方法用来接收消息
@Override
public void handleMessage(Message msg) {
switch(msg.what){ //判断接收的消息
case 0:
iv.setImageResource(R.drawable.photo1);
break;
case 1:
iv.setImageResource(R.drawable.photo2);
break;
case 2:
iv.setImageResource(R.drawable.photo3);
break;

}
super.handleMessage(msg);
}

};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//取得ImageView对象
iv = (ImageView) findViewById(R.id.iv);

thread.start(); //启动线程

}

//新建一个线程
Thread thread = new Thread(new Runnable() {

//实现run方法
@Override
public void run() {
while(true)
{
Message msg = handler.obtainMessage();
msg.what = (what++)%3;
handler.sendMessage(msg); //发送消息
try {
Thread.sleep(2000);//停止2秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}){

};
}

main.xml

<?xml version="1.0" encoding="UTF-8"?>
-<LinearLayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="@string/hello"/> <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/photo1" android:id="@+id/iv"/> </LinearLayout>

分享到:
评论

相关推荐

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

    新线程中发送Handle消息,主线程中处理消息并更新TextView的值

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

    主要介绍了android使用handler异步更新ui的示例,大家参考使用吧

    ndroid异步处理一:使用Thread+Handler实现非UI线程更新UI界面

    ndroid异步处理一:使用Thread+Handler实现非UI线程更新UI界面

    Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面

    Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面。

    Android异步更新UI-线程池-Future-Handler实例分析

    Demo-实例讲解线程池里面的UI如何刷新,处理两个开发者头疼的问题:...1. 数据经常需要读取更新,并且比较耗时,需要分步刷新UI. 2. UI界面切换后,如何停止掉子线程里面正在读取的数据而不会将旧数据刷新到新UI界面上.

    xamarin学习笔记A13(安卓Handler异步消息处理)

    xamarin学习笔记A13(安卓Handler异步消息处理)Android中只能在主线程进行UI操作,不能在子线程操作,要根据子线程执行的结果来更新UI时,需要用到安卓异步消息处理机制。

    Android异步刷新UI多种实现方案

    提供Asynctask Handler+thread 以及 TimerTask等四种方式实现刷新UI,也可以实现类似定时器的效果

    详解android异步更新UI的几种方法

    为了不阻塞ui线程,我们时常会开启一个新的线程(工作线程)来执行这些耗时操作,然后我们可能需要将查询到的数据渲染到ui组件上,那么这个时候我们就需要考虑异步更新ui的问题了。 android中有下列几种异步更新ui的...

    详解android进行异步更新UI的四种方式

    大家都知道由于性能要求,Android要求只能在UI线程中更新UI,要想在其他线程中更新UI,我大致总结了4种方式,欢迎补充纠正: 使用Handler消息传递机制; 使用AsyncTask异步任务; 使用runOnUiThread(action)方法...

    handler的简单示例

    handler的简单示例,通过异步更新ui

    Android异步更新UI的四种方式

    大家都知道由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有4种方式,下面分别使用四种方式来更新一个TextView。 1.使用Handler消息传递机制 package ...

    Android Handler解析

    Android Handler详细解析,讲解Handler之间的通讯,叫你如果用Handler完成异步线程对 UI的更新

    异步线程AsyncTask

    首先明确Android之所以有Handler和AsyncTask 都是为了不阻塞主线程(UI线程) 且UI的更新只能在主线程中完成 因此异步处理是不可避免的 Android为了降低这个开发难度 提供了AsyncTask AsyncTask就是一个封装过的...

    Thread、Handler和HandlerThread关系详解

    前言 前几天看到一道面试题:Thread、Handler和HandlerThread有什么区别?,这个题目有点意思,对于很多人来说,可能对...我们知道Handler是用来异步更新UI的,更详细的说是用来做线程间的通信的,更新UI时是子线程与

    swt-async-handler-1.0

    但是该方法只是用于接收异步线程消息,如果你在该方法中做过多的事情同样会造成UI线程的阻塞。 因此,笔者模仿android的异步访问方式,实现SWT下的Handler机制。通过向handler发送消息,handler接受到消息以后响应...

    深入理解Android中的Handler异步通信机制

    一、问题:在Android启动后会在新进程里创建一个主线程,也叫UI线程(非线程安全)这个线程主要负责监听屏幕点击事件与界面绘制。当Application需要进行耗时操作如网络请求等,如直接在主线程进行容易发生ANR错误。...

    Android编程实现异步消息处理机制的几种方法总结

    Handler是Android提供用来异步更新UI的一套机制,也是一套消息处理机制,可以用它来发送消息,也可以用它来接收消息。 二、为什么使用Handler Android在设计之时,就封装了一套消息的创建、传递、处理机制,作为系统...

    Handler简述

    *Handler 是SDK中处理异步消息的核心类。 主要接受子线程发送的数据, 并用此数据配合主线程更新UI。 作用:可以用于更新UI (但不仅仅是这一个)* Handler不仅可以完成主线程与子线程之间的通信,也可以做到子线程...

    android handler.post和handler.sendMessage的区别和联系

    1. 异步更新UI 2. 延时任务 但是我一直有一个困惑,就是handler.post(r)这个方法有什么独特的作用? 通过看源码发现,post这个方法是把任务r转成一个message放进了handler所在的线程中的messageQueue消息队列中,...

Global site tag (gtag.js) - Google Analytics