android之消息机制(二)

消息通道:Looper

首先编写main.xml文件

代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
	<TextView 
	    android:id="@+id/info"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"/>
	<Button 
	    android:id="@+id/but"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:text="启动"/>
</LinearLayout>
 

  然后改写Activity.java类

代码如下:

package com.example.myfirstproject;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.*;

public class MainActivity extends Activity {
	private TextView info;
	private Button but;
	private static final int SET = 1;
	
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.info = (TextView)super.findViewById(R.id.info);
        this.but = (Button)super.findViewById(R.id.but);
        this.but.setOnClickListener(new OnClickListenerlmpl());
    }    
    private class OnClickListenerlmpl implements OnClickListener{
    	public void onClick(View view){
    		switch(view.getId()){
    		case R.id.but:
    			Looper looper = Looper.myLooper();
    			MyHandler myHandler = new MyHandler(looper);
    			myHandler.removeMessages(0);
    			String data = "hahahaha";
    			Message msg = myHandler.obtainMessage(SET,1,1,data);
    			myHandler.sendMessage(msg);
    			break;
    		}
    	}
    }
    private class MyHandler extends Handler{
    	public MyHandler(Looper looper){
    		super(looper);
    	}
    	public void handleMessage(Message msg){
    		switch(msg.what){
    		case 1:
    			MainActivity.this.info.setText(msg.obj.toString());
    		}
    	}
    }
}

  运行效果:

posted @ 2014-09-27 12:11  再见,少年  Views(116)  Comments(0Edit  收藏  举报