如何在android中使用处理程序在主线程中工作?

时间:2014-10-27 05:40:01

标签: java android handler

我可以使用runOnUiThread更新UI(new Runnable(){。

我认为还有另一种使用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);


    }

我需要使用 DO_UPDATE_TEXT

发送字符串结果

3 个答案:

答案 0 :(得分:0)

            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();
                        }    

                    }
                };

答案 1 :(得分:0)

    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);
        }
    });

答案 2 :(得分:0)

尝试这样可以帮到你,

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);
        }