鏈€杩戝湪鍋氫竴涓被浼间簬QQ鑱婂ぉ鐨勭晫闈?鍙戠幇鐢ㄥ瓙绾跨▼鎺ュ彈娑堟伅鍚?褰撲紶鍏ヤ富UI鐨勬椂鍊?浼氭姤瀛愮嚎绋嬩笉鑳戒慨鏀逛富绾跨▼UI鐨勯敊璇?/p>

鍦ㄨ繖閲屽姝ょ被闂杩涜鎬荤粨 涓昏瑙e喅鐨勬槸 瀛愮嚎绋嬩慨鏀逛富绾跨▼UI鐨勯棶棰?/p>

涓嬮潰鏄憳瑕佺殑涓€绡囧崥鏂?/p>

鏂规硶涓€锛?java涔犳儻锛屽湪android涓嶆帹鑽愪娇鐢級

鍒氬垰寮€濮嬫帴瑙ndroid绾跨▼缂栫▼鐨勬椂鍊欙紝涔犳儻濂藉儚java涓€鏍凤紝璇曞浘鐢ㄤ笅闈㈢殑浠g爜瑙e喅闂

new Thread( new Runnable() {
public void run() {
myView.invalidate();
}
}).start();

鍙互瀹炵幇鍔熻兘锛屽埛鏂癠I鐣岄潰銆備絾鏄繖鏍锋槸涓嶈鐨勶紝鍥犱负瀹冭繚鑳屼簡鍗曠嚎绋嬫ā鍨嬶細Android UI鎿嶄綔骞朵笉鏄嚎绋嬪畨鍏ㄧ殑骞朵笖杩欎簺鎿嶄綔蹇呴』鍦║I绾跨▼涓墽琛屻€?/p>

鏂规硶浜岋細锛圱hread+Handler)

鏌ラ槄浜嗘枃妗e拰apidemo鍚庯紝鍙戣甯哥敤鐨勬柟娉曟槸鍒╃敤Handler鏉ュ疄鐜癠I绾跨▼鐨勬洿鏂扮殑銆?/p>

Handler鏉ユ牴鎹帴鏀剁殑娑堟伅锛屽鐞哢I鏇存柊銆俆hread绾跨▼鍙戝嚭Handler娑堟伅锛岄€氱煡鏇存柊UI銆?/p> Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case TestHandler.GUIUPDATEIDENTIFIER:
myBounceView.invalidate();
break ;
}
super .handleMessage(msg);
}
};
class myThread implements Runnable {
public void run() {
while ( ! Thread.currentThread().isInterrupted()) {

Message message
= new Message();
message.what
= TestHandler.GUIUPDATEIDENTIFIER;

TestHandler.
this .myHandler.sendMessage(message);
try {
Thread.sleep(
100 );
}
catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}

浠ヤ笂鏂规硶demo鐪?http://rayleung.javaeye.com/blog/411860

鏂规硶涓夛細锛坖ava涔犳儻锛屼笉鎺ㄨ崘锛?/span>

鍦ˋndroid骞冲彴涓渶瑕佸弽澶嶆寜鍛ㄦ湡鎵ц鏂规硶鍙互浣跨敤Java涓婅嚜甯︾殑TimerTask绫伙紝TimerTask鐩稿浜嶵hread鏉ヨ瀵逛簬璧勬簮娑堣€楃殑鏇翠綆锛岄櫎浜嗕娇鐢ˋndroid鑷甫鐨凙larmManager浣跨敤Timer瀹氭椂鍣ㄦ槸涓€绉嶆洿濂界殑瑙e喅鏂规硶銆?鎴戜滑闇€瑕佸紩鍏mport java.util.Timer; 鍜?import java.util.TimerTask;

public class JavaTimer extends Activity {

Timer timer
= new Timer();
TimerTask task
= new TimerTask(){
public void run() {
setTitle(
" hear me? " );
}
};

public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);

timer.schedule(task,
10000 );

}
}

鏂规硶鍥涳細(TimerTask + Handler)

瀹為檯涓婅繖鏍峰仛鏄笉琛岀殑锛岃繖璺烝ndroid鐨勭嚎绋嬪畨鍏ㄦ湁鍏筹紒搴旇閫氳繃閰嶅悎Handler鏉ュ疄鐜皌imer鍔熻兘鐨勶紒

public class TestTimer extends Activity {

Timer timer
= new Timer();
Handler handler
= new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 1 :
setTitle(
" hear me? " );
break ;
}
super .handleMessage(msg);
}

};

TimerTask task
= new TimerTask(){
public void run() {
Message message
= new Message();
message.what
= 1 ;
handler.sendMessage(message);
}
};

public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
timer.schedule(task, 10000 );
}
}

鏂规硶浜旓細( Runnable + Handler.postDelayed(runnable,time))

鍦ˋndroid閲屽畾鏃舵洿鏂?UI锛岄€氬父浣跨敤鐨勬槸java.util.Timer,java.util.TimerTask, android.os.Handler缁勫悎銆傚疄闄呬笂Handler 鑷韩宸茬粡鎻愪緵浜嗗畾鏃剁殑鍔熻兘銆?nbsp;

private Handler handler = new Handler();

private Runnable myRunnable = new Runnable() {
public void run() {

if (run) {
handler.postDelayed(
this , 1000 );
count
++ ;
}
tvCounter.setText(
" Count: " + count);

}
};

鐒跺悗鍦ㄥ叾浠栧湴鏂硅皟鐢?/p>

handler.post(myRunnable);

handler.post(myRunnable,time);

妗堜緥鐪嬶細http://shaobin0604.javaeye.com/blog/515820

====================================================================

鐭ヨ瘑鐐规€荤粨琛ュ厖锛?/strong>

寰堝鍒濆叆Android鎴朖ava寮€鍙戠殑鏂版墜瀵筎hread銆丩ooper銆丠andler鍜孧essage浠嶇劧姣旇緝杩锋儜锛岃鐢熺殑鏈塇andlerThread銆乯ava.util.concurrent銆乀ask銆丄syncTask鐢变簬鐩墠甯傞潰涓婄殑涔︾睄绛夎祫鏂欓兘娌℃湁璋堝埌杩欎簺闂锛屼粖澶╁氨杩欎竴闂鍋氭洿绯荤粺鎬х殑鎬荤粨銆傛垜浠垱寤虹殑Service銆丄ctivity浠ュ強Broadcast鍧囨槸涓€涓富绾跨▼澶勭悊锛岃繖閲屾垜浠彲浠ョ悊瑙d负UI绾跨▼銆備絾鏄湪鎿嶄綔涓€浜涜€楁椂鎿嶄綔鏃讹紝姣斿I/O璇诲啓鐨勫ぇ鏂囦欢璇诲啓锛屾暟鎹簱鎿嶄綔浠ュ強缃戠粶涓嬭浇闇€瑕佸緢闀挎椂闂达紝涓轰簡涓嶉樆濉炵敤鎴风晫闈紝鍑虹幇ANR鐨勫搷搴旀彁绀虹獥鍙o紝杩欎釜鏃跺€欐垜浠彲浠ヨ€冭檻浣跨敤Thread绾跨▼鏉ヨВ鍐炽€?/p>

瀵逛簬浠庝簨杩嘕2ME寮€鍙戠殑绋嬪簭鍛樻潵璇碩hread姣旇緝绠€鍗曪紝鐩存帴鍖垮悕鍒涘缓閲嶅啓run鏂规硶锛岃皟鐢╯tart鏂规硶鎵ц鍗冲彲銆傛垨鑰呬粠Runnable鎺ュ彛缁ф壙锛屼絾瀵逛簬Android骞冲彴鏉ヨUI鎺т欢閮芥病鏈夎璁℃垚涓?strong>绾跨▼瀹夊叏绫诲瀷锛屾墍浠ラ渶瑕佸紩鍏ヤ竴浜涘悓姝ョ殑鏈哄埗鏉ヤ娇鍏跺埛鏂帮紝杩欑偣Google鍦ㄨ璁ndroid鏃跺€掓槸鍙傝€冧簡涓媁in32鐨勬秷鎭鐞嗘満鍒躲€?/p>

1. 瀵逛簬绾跨▼涓殑鍒锋柊涓€涓猇iew涓哄熀绫荤殑鐣岄潰锛屽彲浠?span style="color: #ff0000;">浣跨敤postInvalidate()鏂规硶鍦ㄧ嚎绋嬩腑鏉ュ鐞嗭紝鍏朵腑杩樻彁渚涗簡涓€浜涢噸鍐欐柟娉曟瘮濡俻ostInvalidate(int left,int top,int right,int bottom) 鏉ュ埛鏂颁竴涓煩褰㈠尯鍩燂紝浠ュ強寤舵椂鎵ц锛屾瘮濡俻ostInvalidateDelayed(long delayMilliseconds)鎴杙ostInvalidateDelayed(long delayMilliseconds,int left,int top,int right,int bottom) 鏂规硶锛屽叾涓涓€涓弬鏁颁负姣

2. 褰撶劧鎺ㄨ崘鐨勬柟娉曟槸閫氳繃涓€涓?span style="color: #ff0000;">Handler鏉ュ鐞?/strong>杩欎簺锛屽彲浠ュ湪涓€涓嚎绋嬬殑run鏂规硶涓皟鐢╤andler瀵硅薄鐨?postMessage鎴杝endMessage鏂规硶鏉ュ疄鐜帮紝Android绋嬪簭鍐呴儴缁存姢鐫€涓€涓秷鎭槦鍒楋紝浼氳疆璁鐞嗚繖浜涳紝濡傛灉浣犳槸Win32绋嬪簭鍛樺彲浠ュ緢濂界悊瑙h繖浜涙秷鎭鐞嗭紝涓嶈繃鐩稿浜嶢ndroid鏉ヨ娌℃湁鎻愪緵 PreTranslateMessage杩欎簺骞叉秹鍐呴儴鐨勬柟娉曘€?/p>

3. Looper鍙堟槸浠€涔堝憿? 锛屽叾瀹濧ndroid涓瘡涓€涓猅hread閮借窡鐫€涓€涓狶ooper锛孡ooper鍙互甯姪Thread缁存姢涓€涓秷鎭槦鍒楋紝浣嗘槸Looper鍜孒andler娌℃湁浠€涔堝叧绯伙紝鎴戜滑浠庡紑婧愮殑浠g爜鍙互鐪嬪埌Android杩樻彁渚涗簡涓€涓猅hread缁ф壙绫籋anderThread鍙互甯姪鎴戜滑澶勭悊锛屽湪HandlerThread瀵硅薄涓彲浠ラ€氳繃getLooper鏂规硶鑾峰彇涓€涓狶ooper瀵硅薄鎺у埗鍙ユ焺锛屾垜浠彲浠ュ皢鍏惰繖涓狶ooper瀵硅薄鏄犲皠鍒颁竴涓狧andler涓幓鏉ュ疄鐜颁竴涓嚎绋嬪悓姝ユ満鍒讹紝Looper瀵硅薄鐨勬墽琛岄渶瑕佸垵濮嬪寲Looper.prepare鏂规硶灏辨槸鏄ㄥぉ鎴戜滑鐪嬪埌鐨勯棶棰橈紝鍚屾椂鎺ㄥ嚭鏃惰繕瑕侀噴鏀捐祫婧愶紝浣跨敤Looper.release鏂规硶銆?/p>

4.Message 鍦ˋndroid鏄粈涔堝憿? 瀵逛簬Android涓璈andler鍙互浼犻€掍竴浜涘唴瀹癸紝閫氳繃Bundle瀵硅薄鍙互灏佽String銆両nteger浠ュ強Blob浜岃繘鍒跺璞★紝鎴戜滑閫氳繃鍦ㄧ嚎绋嬩腑浣跨敤Handler瀵硅薄鐨剆endEmptyMessage鎴杝endMessage鏂规硶鏉ヤ紶閫掍竴涓狟undle瀵硅薄鍒癏andler澶勭悊鍣?/strong>銆傚浜嶩andler绫绘彁渚涗簡閲嶅啓鏂规硶handleMessage(Message msg)鏉ュ垽鏂紝閫氳繃msg.what鏉ュ尯鍒嗘瘡鏉′俊鎭?/strong>銆傚皢Bundle瑙e寘鏉ュ疄鐜癏andler绫绘洿鏂癠I绾跨▼涓殑鍐呭瀹炵幇鎺т欢鐨勫埛鏂版搷浣溿€傜浉鍏崇殑Handler瀵硅薄鏈夊叧娑堟伅鍙戦€乻endXXXX鐩稿叧鏂规硶濡備笅锛屽悓鏃惰繕鏈塸ostXXXX鐩稿叧鏂规硶锛岃繖浜涘拰Win32涓殑閬撶悊鍩烘湰涓€鑷达紝涓€涓负鍙戦€佸悗鐩存帴杩斿洖锛屼竴涓负澶勭悊鍚庢墠杩斿洖 .

5. java.util.concurrent瀵硅薄鍒嗘瀽锛屽浜庤繃鍘讳粠浜婮ava寮€鍙戠殑绋嬪簭鍛樹笉浼氬Concurrent瀵硅薄鎰熷埌闄岀敓鍚э紝浠栨槸JDK 1.5浠ュ悗鏂板鐨勯噸瑕佺壒鎬т綔涓烘帉涓婅澶囷紝鎴戜滑涓嶆彁鍊′娇鐢ㄨ绫伙紝鑰冭檻鍒癆ndroid涓烘垜浠凡缁忚璁″ソ鐨凾ask鏈哄埗锛岃繖閲屼笉鍋氳繃澶氱殑璧樿堪锛岀浉鍏冲師鍥犲弬鑰冧笅闈㈢殑浠嬬粛:

6. 鍦ˋndroid涓繕鎻愪緵浜嗕竴绉嶆湁鍒簬绾跨▼鐨勫鐞嗘柟寮忥紝灏辨槸Task浠ュ強AsyncTask锛屼粠寮€婧愪唬鐮佷腑鍙互鐪嬪埌鏄拡瀵笴oncurrent鐨勫皝瑁咃紝寮€鍙戜汉鍛樺彲浠ユ柟渚跨殑澶勭悊杩欎簺寮傛浠诲姟銆?/p>

鎽樺綍鑷細http://www.android123.com.cn/androidkaifa/422.html

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android中LayoutInflater实例
  2. [Unity3D]Android实现手机震动功能
  3. Android ListView圆角
  4. 第二部分 工具库
  5. View去锯齿,在有些机器需要在图层的软件层
  6. android -> 尺寸变化动画类( ScaleAnimati
  7. [android]浅谈android的selector,背景选择
  8. Android 上SuperUser获取ROOT权限原理解
  9. Android(安卓)Editable
  10. RxJava2+retrofit简单使用,基于POST请求封