【问题标题】:how to use handler in android to work in main thread?如何使用android中的处理程序在主线程中工作?
【发布时间】:2014-12-22 06:53:51
【问题描述】:

我可以使用 runOnUiThread(new Runnable() { .

更新 UI

我认为还有另一种使用 Handler 更新 UI 的方法。请告诉我如何使用处理程序更新 UI。

我就是这样用的

@Override
public void getWebserviceResponse(final String result) {
    // TODO Auto-generated method stub
    runOnUiThread(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            refreshUi(result);
        }
    });


}

我将如何使用处理程序实现相同的目标?

更新

private Handler messageHandler = new Handler() {
        public void handleMessage(Message msg) {
            final int what = msg.what;
            switch(what) {
            case DO_UPDATE_TEXT: doUpdate(); break;

            }

        }
    };



@Override
    public void getWebserviceResponse(final String result) {

        messageHandler.sendEmptyMessage(DO_UPDATE_TEXT);


    }

我需要发送 String resultDO_UPDATE_TEXT

【问题讨论】:

标签: java android handler


【解决方案1】:

这样试试可能对你有帮助,

private Handler messageHandler = new Handler() {

                public void handleMessage(Message msg) {
                    final int what = msg.what;
                    switch(what) {
                    case DO_UPDATE_TEXT: 
                     String result = msg.arg1;
                     doUpdate(); 
                     break;
                    }
                }
            };

    @Override
    public void getWebserviceResponse(final String result) {
           Message msg = handler.obtainMessage();
           msg.what = DO_UPDATE_TEXT;
           msg.obj = result;

           messageHandler.sendMessage(msg);
        }

【讨论】:

    【解决方案2】:
        final Handler h = new Handler();
        h.post(new Runnable() {
            @Override
            public void run() {
    
                 long millis =(long)currentTime(); // Get current time in Milli Seconds                 
                 dateAndTime.setText(getDate(millis, "dd/MM/yyyy hh:mm:ss.SSS")); // Set it as Date&Time                    
                 h.postDelayed(this, 1000);
            }
        });
    

    【讨论】:

      【解决方案3】:
                  private final Handler handler = new Handler() {
      
                          public void handleMessage(String result) {
      
      
                              if ((null != response)) {
      
                                  // ALERT MESSAGE
                                   refreshUi(result);
                              }
                              else
                              {
      
                                      // ALERT MESSAGE
                                      Toast.makeText(
                                              getBaseContext(),
                                              "Not Result to show",
                                              Toast.LENGTH_SHORT).show();
                              }    
      
                          }
                      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-05
        • 2020-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-10
        相关资源
        最近更新 更多