Android鐨凩ooper鎬庝箞浣跨敤
鍦ˋndroid涓紝Looper鏄敤鏉ュ皢涓€涓嚎绋嬩笌涓€涓秷鎭槦鍒楀叧鑱旇捣鏉ョ殑绫汇€傚畠鍙互浣跨嚎绋嬭兘澶熷鐞嗘潵鑷秷鎭槦鍒楃殑娑堟伅銆?/p>
涓嬮潰鏄竴浜涗娇鐢↙ooper鐨勬楠わ細
-
鑾峰彇褰撳墠绾跨▼鐨凩ooper瀵硅薄銆傚湪涓荤嚎绋嬩腑锛屽彲浠ヤ娇鐢?code>Looper.getMainLooper()鏂规硶鏉ヨ幏鍙栦富绾跨▼鐨凩ooper瀵硅薄銆傚湪鍏朵粬绾跨▼涓紝鍙互浣跨敤
Looper.myLooper()
鏂规硶鏉ヨ幏鍙栧綋鍓嶇嚎绋嬬殑Looper瀵硅薄銆?/p> -
鍒涘缓涓€涓狧andler瀵硅薄銆侶andler鏄敤鏉ュ彂閫佸拰澶勭悊娑堟伅鐨勭被銆傚彲浠ュ湪涓荤嚎绋嬩腑鍒涘缓涓€涓狧andler瀵硅薄锛屼篃鍙互鍦ㄥ叾浠栫嚎绋嬩腑鍒涘缓銆傚鏋滃湪鍏朵粬绾跨▼涓垱寤篐andler瀵硅薄锛屽垯闇€瑕佸湪璇ョ嚎绋嬩腑鍏堣皟鐢?code>Looper.prepare()鏂规硶鏉ヤ负璇ョ嚎绋嬪垱寤篖ooper瀵硅薄銆?/p>
-
灏哃ooper瀵硅薄涓庢秷鎭槦鍒楀叧鑱旇捣鏉ャ€傚湪涓荤嚎绋嬩腑锛屽彲浠ョ洿鎺ヤ娇鐢ㄤ富绾跨▼鐨凩ooper瀵硅薄銆傚湪鍏朵粬绾跨▼涓紝闇€瑕佸厛璋冪敤
Looper.loop()
鏂规硶鏉ュ惎鍔ㄦ秷鎭惊鐜紝灏嗚绾跨▼鐨凩ooper瀵硅薄涓庢秷鎭槦鍒楀叧鑱旇捣鏉ャ€?/p> -
浣跨敤Handler瀵硅薄鍙戦€佸拰澶勭悊娑堟伅銆傚彲浠ラ€氳繃璋冪敤Handler鐨?code>sendMessage()鏂规硶鏉ュ彂閫佹秷鎭紝閫氳繃閲嶅啓Handler鐨?code>handleMessage()鏂规硶鏉ュ鐞嗘秷鎭€?/p>
涓嬮潰鏄竴涓娇鐢↙ooper鐨勪緥瀛愶細
// 鍦ㄥ叾浠栫嚎绋嬩腑浣跨敤Looper
// 鍦ㄥ叾浠栫嚎绋嬩腑鍒涘缓Handler瀵硅薄
Handler handler = new Handler();
// 鍦ㄥ叾浠栫嚎绋嬩腑璋冪敤Looper.prepare()鏂规硶鍒涘缓Looper瀵硅薄
Looper.prepare();
// 鍦ㄥ叾浠栫嚎绋嬩腑璋冪敤Looper.loop()鏂规硶鍚姩娑堟伅寰幆
Looper.loop();
// 鍦ㄥ叾浠栫嚎绋嬩腑浣跨敤Handler瀵硅薄鍙戦€佸拰澶勭悊娑堟伅
handler.post(new Runnable() {
@Override
public void run() {
// 鍙戦€佹秷鎭?/span>
handler.sendMessage(handler.obtainMessage(1, "Hello"));
// 澶勭悊娑堟伅
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 澶勭悊娑堟伅閫昏緫
}
};
}
});
娉ㄦ剰锛屼娇鐢↙ooper鏃堕渶瑕佹敞鎰忔秷鎭殑澶勭悊涓嶈闃诲涓荤嚎绋嬶紝浠ュ厤瀵艰嚧ANR锛圓pplication Not Responding锛夐敊璇€?/p>
相关问答