`
longgangbai
  • 浏览: 7253598 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android的线程Handler实现

 
阅读更多

        在Android和SWT一样,他们的主线程为UI线程,如果要更新必须进行特殊的处理才可以。本文的目的通过线程定时更新界面的标题信息变化。

代码如下:

package com.easyway.android.threads;

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

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
/**
 * UI Thread 界面的更新方式
 *  Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title.
 * 
 * @author longgangbai
 *
 */
public class UIThreadAndroidActivity extends Activity {
 
	      
	    //title为setTitle方法提供变量,这里为了方便我设置成了int型  
	    private int title = 0;  
	    @Override
	    public void onCreate(Bundle savedInstanceState) {  
	        super.onCreate(savedInstanceState);  
	        setContentView(R.layout.main);  
	        Timer timer = new Timer();  
	        timer.scheduleAtFixedRate(new MyTask(), 1, 5000);  
	    }  
	    /**
	     * UI更新方法
	     */
	    private Handler mHandler = new Handler(){  
	        public void handleMessage(Message msg) {  
	            switch (msg.what) {  
	            case 1:  
	                updateTitle();  
	                break;  
	            }  
	        };  
	    };  

	    /**
	     * 更新界面的线程
	     * @author longgangbai
	     *
	     */
	    private class MyTask extends TimerTask{  
	        @Override  
	        public void run() {  
	            Message message = new Message();  
	            message.what = 1;  
	            //调用更新方法
	            mHandler.sendMessage(message);  
	        }     
	    }  
	    /**
	     * 具体更新界面的方式
	     */
	    public void updateTitle(){  
	        setTitle("Welcome to longgangbai's blog " + title);  
	        title ++;  
	    }  
	}  

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.easyway.android.threads"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="14" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".UIThreadAndroidActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics