AndroidのスレッドHandler実装

3107 ワード

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>