Looper.prepare()鍜孡ooper.loop()鎬庝箞浣跨敤
Looper.prepare() 鏂规硶鐢ㄤ簬鍒濆鍖栧綋鍓嶇嚎绋嬬殑 Looper 瀵硅薄锛岃鏂规硶搴旇鍦ㄥ綋鍓嶇嚎绋嬬殑 Handler 鎴栬€?MessageQueue 浣跨敤涔嬪墠璋冪敤銆?/p>
Looper.loop() 鏂规硶鏄?Looper 绫荤殑鏍稿績鏂规硶锛屽畠浼氬惎鍔ㄤ竴涓棤闄愬惊鐜紝鍦ㄥ惊鐜腑涓嶆柇鍦颁粠褰撳墠绾跨▼鐨?MessageQueue 涓彇鍑烘秷鎭繘琛屽鐞嗐€傝鏂规硶浼氫竴鐩撮樆濉炲綋鍓嶇嚎绋嬶紝鐩村埌璋冪敤 Looper.quit() 鏂规硶鍋滄寰幆銆?/p>
涓嬮潰鏄竴涓畝鍗曠殑绀轰緥锛屾紨绀轰簡濡備綍浣跨敤 Looper.prepare() 鍜?Looper.loop() 鏂规硶锛?/p>
public class MyThread extends Thread {
public Handler mHandler;
@Override
public void run() {
// 鍒濆鍖?Looper
Looper.prepare();
// 鍒涘缓 Handler
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// 澶勭悊娑堟伅
// ...
}
};
// 鍚姩寰幆
Looper.loop();
}
}
鍦ㄤ笂杩扮ず渚嬩腑锛屾垜浠垱寤轰簡涓€涓嚎绋嬬被 MyThread
锛屽湪 run()
鏂规硶涓皟鐢ㄤ簡 Looper.prepare()
鍒濆鍖?Looper 瀵硅薄锛屽苟鍒涘缓浜嗕竴涓?Handler 瀵硅薄銆傜劧鍚庤皟鐢?Looper.loop()
鏂规硶鍚姩寰幆銆?/p>
鍦ㄥ惊鐜腑锛屽彲浠ラ€氳繃璋冪敤 mHandler.sendMessage()
鍙戦€佹秷鎭紝鐒跺悗鍦?handleMessage()
鏂规硶涓鐞嗘秷鎭€?/p>
闇€瑕佹敞鎰忕殑鏄紝Looper.loop() 鏂规硶浼氫竴鐩撮樆濉炲綋鍓嶇嚎绋嬶紝鍥犳瑕佺‘淇濆湪鍚堥€傜殑鏃跺€欒皟鐢?Looper.quit() 鏂规硶鏉ュ仠姝㈠惊鐜紝鍚﹀垯浼氶€犳垚绾跨▼鏃犳硶閫€鍑虹殑闂銆?/p>
相关问答