runonuiThread UI循环

时间:2017-04-19 03:26:44

标签: android multithreading progressdialog

这是我的代码

我希望在显示来自服务器的数据之前显示progressdialog, 当我从服务器得到结果时(如果items.size> 0),progressdialog将被解雇; 但我运行此代码,我从服务器接收数据,但在runonuiThread中,仍然运行progressdialog。

List<ServerData> items = new ArrayList();
progressdialog.show();    

    Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {

                    HttpRequest...
                    Gson gson = new Gson();
                    Type type = new TypeToken<List<ServerData>>(){}.getType();
                    items = gson.fromJson(String,type);

                    Log.d("ThreadInfo","" + items.size);

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if(items.size > 0){
                                progressdialog.dismiss();
                            }
                        }
                    });
                }
            });

当我记录ThreadInfo时,它发送items.size值为1 但仍然是progressdialog正在运行而不会消失。

问题, 当items.size不为0时,如何解除progressdialog?

如果您有任何想法,请帮助我。

1 个答案:

答案 0 :(得分:0)

您必须像这样更改您的代码

if (items.size > 0) {


    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                                progressdialog.dismiss();
                        }
                    });

}