您的位置:首页 > 产品设计 > UI/UE

Handler消息机制实现更新主UI

2016-03-15 13:04 519 查看
如下实现的是简单的更新主UI的方法,用Handler消息机制

将textview的内容每隔一秒实现num++

/*
* handler消息机制
* asynctask异步任务
*
* httpclient完成 android客户端向服务器传递数据:
* get
* post
*
* 主UI线程 : 负责创建UI,更新UI
* 在android中UI操作不是线程 安全的,如果多个线程 并发的去操作同一个组件,
* 可能导致线程 安全问题,为了解决这个问题,android制定了一个规则:
* 只允许UI线程 来修改UI组件的属性。
* 同时主UI线程 不也允许超过5秒以上的耗时操作,
*
* */

代码:

MainActivity.java

package com.example.handler_test;

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

public class MainActivity extends Activity {

private TextView tv;
private static int num = 1;
private Handler handler;
public static final int UPDATE=1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);

handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what){
case UPDATE:
tv.setText(msg.getData().get("val")+"");
break;
}
}
};

new Thread(){
public void run() {
for(int i=0;i<16;i++){
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
Message msg = new Message();
msg.what = UPDATE;
Bundle bundle = new Bundle();
bundle.putInt("val", num++);
msg.setData(bundle);
handler.sendMessage(msg);
}
};
}.start();

}

}


activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="null" />

</RelativeLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: