Handler实例

    子类需要继承Hendler类,并重写handleMessage(Message msg) 方法,用于接受线程数据,主要看具体实例,重要的部分都已给了注释:

 

public class MainActivity extends Activity {  
    /** Called when the activity is first created. */  
    private WebView wv =null;  
    private Handler h = new Handler();  
    public final String TAG = "UNISDP";  
    public final String MY_LOG = "my_log";   
    MyHandler myHandler;   
      
    @Override  
    public void onCreate(Bundle savedInstanceState)   
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        wv = (WebView) findViewById(R.id.web);  
        WebSettings webSettings = wv.getSettings();  
  
        webSettings.setJavaScriptEnabled(true);  
        webSettings.setSaveFormData(false);  
        webSettings.setSavePassword(false);  
        webSettings.setSupportZoom(false);  
        wv.addJavascriptInterface(new runJavaScript(), "myjs");  
        wv.loadUrl(sdFilePath);  
          
        myHandler = new MyHandler(); // 当创建一个新的Handler实例时, 它会绑定到当前线程的消息队列中,开始分发数据  
          
        MyThread m = new MyThread();  
        Thread getDataFromServer_thread = new Thread(m);  
        getDataFromServer_thread.start();     
    }  
    //----取数据线程 从 服务器获取数据  
    class MyThread implements Runnable   
    {   
        public void run()   
        {     
            Message msg ;  
            Bundle b ;                                
            while(true)  
            {  
                try   
                {  
                    Thread.sleep(1000);  
                    msg = new Message();  
                    b = new Bundle();// 存放数据  
                    b.putString("value", "发送给UI线程的数据...");  
                    msg.setData(b);  
                    MainActivity.this.myHandler.sendMessage(msg); // 向Handler发送消息,更新UI  
                }   
                catch (InterruptedException e)   
                {  
                    e.printStackTrace();  
                }                     
                   
            }  
        }   
    }    
    // 接受消息,处理消息 ,此Handler会与当前主线程一块运行   
    class MyHandler extends Handler  
    {   
        public MyHandler()   
        {   
        }   
        public MyHandler(Looper L)  
        {  
            super(L);  
        }   
        // 子类必须重写此方法,接受数据   
        @Override   
        public void handleMessage(Message msg)   
        {        
            super.handleMessage(msg);          
            // 此处可以更新UI   
            Bundle b = msg.getData();   
            String strValue = b.getString("value");   
            //MainActivity.this.button.append(color);   
            Log.i(MY_LOG,strValue);  
        }   
    }     
    
}