1 final Handler handler = new Handler() { 2 public void handleMessage(Message msg) { 3 switch (msg.what) { 4 case MSG_OK: 5 rl_loading.setVisibility(View.GONE); 6 break; 7 } 8 super.handleMessage(msg); 9 } 10 }; 11 12 new Thread(new Runnable() { 13 14 @Override 15 public void run() { 16 try { 17 Message message = new Message(); 18 message.what = MSG_OK; 19 handler.sendMessage(message); 20 } catch (Exception e) { 21 } 22 } 23 }).start();
如上:在新线程的run中完成耗时操作,完成后用消息的方式通知主线程。
另外,Android中的Timer也是用类似的的方式实现的,Timer负责定时发送消息,主线程中完成操作:
1 TimerTask task = new TimerTask() { 2 public void run() { 3 Message message = new Message(); 4 message.what = 1; 5 handler.sendMessage(message); 6 } 7 }; 8 Timer timer = new Timer(true); 9 timer.schedule(task, 1000, 10000); // 延时1s后执行,10s执行一次
浙公网安备 33010602011771号