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执行一次