7.21 android天气预报 日记

今天终于进了工作室第一轮考核,不容易但是不辛苦,因为自己喜欢微笑

今天想写一写关于handler的一些内容

Handler 1在新开启的线程中发送消息

  2接受子线程发送的数据, 并根据数据配合主线程更新UI.

一般程序运行的时候会启动主线程,很多控件可能会触发很多事件,而如果你的操作如果将会是一个延时操作,比如说联网更新操作,是不允许在主线程中执行的,因为联网操作超过五秒的话那程序就回出现假死状态,也就会强退。所以就要开启新线程去做一些延时操作,然而如果你在新开的线程里面又要更新UI,改变空间的文字及背景等,然后android主线程是线程不安全的!这句话的意思就是更新UI操作只能在主线程中完成,副线程不能这样做,而为什么是这样的呢?那是因为如果你同时多个线程去操作它的时候,可能会造成冲突,所以在android中是不允许这样的操作的。那要怎么实现呢?那就是handler的作用了,我们可以通过handler告诉主线程,然后让主线程去执行你要完成的操作

下面的例子是疯狂android讲义里的一个自动播放动画的实例

package org.crazyit.event;

import java.util.Timer;
import java.util.TimerTask;

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

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a>
 * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class HandlerTest extends Activity
{
	// 定义周期性显示的图片的ID
	int[] imageIds = new int[]
	{
		R.drawable.java,
		R.drawable.ee,
		R.drawable.ajax,
		R.drawable.xml,
		R.drawable.classic
	};
	int currentImageId = 0;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		final ImageView show = (ImageView) findViewById(R.id.show);
		final Handler myHandler = new Handler()
		{
			@Override
			public void handleMessage(Message msg)
			{
				// 如果该消息是本程序所发送的
				if (msg.what == 0x1233)
				{
					// 动态地修改所显示的图片
					show.setImageResource(imageIds[currentImageId++
						% imageIds.length]);
				}
			}
		};
		// 定义一个计时器,让该计时器周期性地执行指定任务
		new Timer().schedule(new TimerTask()
		{
			@Override
			public void run()
			{
				// 发送空消息
				myHandler.sendEmptyMessage(0x1233);
			}
		}, 0, 1200);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值