最经面试中,技术面试中有一个是Handler的消息机制,细细想想,我经常用到的Handler无非是在主线程(或者说Activity)新建一个Handler对象,另外一个Thread是异步加载数据,同时当他加载完数据后就send到主线程中的那个Handler对象,接着Handler来处理,刚才发送的一些消息。

          [Android]Handler的消息机制

 1 public class HandlerTestActivity extends Activity {
 2     private TextView tv;
 3     private static final int UPDATE = 0;
 4     private Handler handler = new Handler() {
 5 
 6         @Override
 7         public void handleMessage(Message msg) {
 8             // TODO 接收消息并且去更新UI线程上的控件内容
 9             if (msg.what == UPDATE) {
10                 // Bundle b = msg.getData();
11                 // tv.setText(b.getString("num"));
12                 tv.setText(String.valueOf(msg.obj));
13             }
14             super.handleMessage(msg);
15         }
16     };
17 
18     /** Called when the activity is first created. */
19     @Override
20     public void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.main);
23         tv = (TextView) findViewById(R.id.tv);
24 
25         new Thread() {
26             @Override
27             public void run() {
28                 // TODO 子线程中通过handler发送消息给handler接收,由handler去更新TextView的值
29                 try {
30                     for (int i = 0; i < 100; i++) {
31                         Thread.sleep(500);
32                         Message msg = new Message();
33                         msg.what = UPDATE;
34                         // Bundle b = new Bundle();
35                         // b.putString("num", "更新后的值:" + i);
36                         // msg.setData(b);
37                         msg.obj = "更新后的值:" + i;
38                         handler.sendMessage(msg);
39                     }
40                 } catch (InterruptedException e) {
41                     e.printStackTrace();
42                 }
43             }
44         }.start();
45     }
46 
47 }
View Code

相关文章:

  • 2021-05-27
  • 2022-02-08
  • 2021-10-16
  • 2021-08-24
  • 2022-02-08
  • 2022-01-12
  • 2021-04-28
  • 2022-12-23
猜你喜欢
  • 2022-01-11
  • 2022-01-24
  • 2021-12-22
  • 2021-07-10
  • 2021-10-04
  • 2021-07-06
  • 2022-12-23
相关资源
相似解决方案