編輯:關於Android編程
本文主要介紹Android的Handler的使用方法。Handler可以發送Messsage和Runnable對象到與其相關聯的線程的消息隊列。每個Handler對象與創建它的線程相關聯,並且每個Handler對象只能與一個線程相關聯。
◆ 通過Runnable在子線程中更新界面的例子
在onCreate中創建Handler public class HandlerTestApp extends Activity { Handler mHandler; TextView mText; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mHandler = new Handler();//創建Handler mText = (TextView) findViewById(R.id.text0);//一個TextView }構建Runnable對象,在runnable中更新界面,此處,我們修改了TextView的文字.此處需要說明的是,Runnable對象可以再主線程中創建,也可以再子線程中創建。我們此處是在子線程中創建的。
Runnable mRunnable0 = new Runnable() { @Override public void run() { // TODO Auto-generated method stub mText.setText("This is Update from ohter thread, Mouse DOWN"); } };
private void updateUIByRunnable(){ new Thread() { //Message msg = mHandler.obtainMessage(); public void run() { //mText.setText("This is Update from ohter thread, Mouse DOWN");//這句將拋出異常 mHandler.post(mRunnable0); } }.start(); }
◆ 用Message在子線程中來更新界面
用Message更新界面與Runnable更新界面類似,只是需要修改幾個地方。實現自己的Handler,對消息進行處理 private class MyHandler extends Handler { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch(msg.what) { case UPDATE://在收到消息時,對界面進行更新 mText.setText("This update by message"); break; } } } 在新的線程中發送消息 private void updateByMessage() { //匿名對象 new Thread() { public void run() { //mText.setText("This is Update from ohter thread, Mouse DOWN"); //UPDATE是一個自己定義的整數,代表了消息ID Message msg = mHandler.obtainMessage(UPDATE); mHandler.sendMessage(msg); } }.start(); }
這篇博客為大家介紹一個android常見的功能——ListView下拉刷新:首先下拉未松手時候手機顯示這樣的界面:下面的代碼是自定的扎樣的控件:<span >
概述 Android事件傳遞機制也是Android系統中比較重要的一塊,事件類型有很多種,這裡主要討論TouchEvent的事件在framework層的傳遞處理機制。因
示意代碼: /** * 調用系統的分享功能 * Created by admin on 15-4-13. */public class ShareActivit
Android 通過Socket 和服務器通訊,是一種比較常用的通訊方式,時間比較緊,說下大致的思路,希望能幫到使用socket 進行通信的人(1)開啟一個線程發送消息&