首页 新闻 会员 周边

方法里面首先执行的是返回list值,此时list为空,然后才执行线程,这个如何解决?

0
悬赏园豆:5 [已解决问题] 解决于 2015-03-16 09:16
private List<String> populateCountries(){
        Log.e("populateCountries", "in");
        
        final List<String> lineData = new ArrayList<String>();
        
//        final String analysisArrayData = "";
        
//        lineData = new ArrayList<String>();
        
        Thread thread = new Thread(){
            @Override
            public void run() {
                super.run();
                requestData = new RequestData();
                builder = requestData.sendData(path);
                try {
                    JSONObject buidlerData = new JSONObject(builder.toString());
                    JSONArray jsonData = buidlerData.getJSONArray("data");
//                    Log.e("jsonData", jsonData.toString());
//                    String dataJson = "";
                    for (int i = 0; i < jsonData.length(); i++) {
                        JSONObject arrayData = (JSONObject) jsonData.opt(i);
                        
                        String analysisArrayData = arrayData.getString("BRAND_EN");
                        
//                        dataJson = arrayData.getString("BRAND_EN");
//                        analysisArrayData += dataJson;
                        
//                        lineData.add(analysisArrayData);
//                        Log.e("hello world", lineData.toString());
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                            }
        };
        thread.setContextClassLoader(getClass().getClassLoader());
        thread.start();
        Log.e("hello world", lineData.toString());
        
        return lineData;

 

..科的主页 ..科 | 菜鸟二级 | 园豆:204
提问于:2015-03-13 09:39
< >
分享
最佳答案
1

请问何为线程?

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2015-03-13 09:47

程序运行的顺序执行流

..科 | 园豆:204 (菜鸟二级) | 2015-03-13 09:51

不是很懂 

..科 | 园豆:204 (菜鸟二级) | 2015-03-13 09:53

@..科: 你坐在办公室里面,想要喝杯咖啡,发现没有咖啡,只有杯子。

客人在,不好走开,咋办呢?叫小王过来,这是100元,你到楼下超市帮我买一盒鸟窝速溶咖啡(这就是线程)。然后你继续和客户聊天,等小王回来再冲咖啡。

关键一个字是等。当然等的时候你可以继续聊天。

 

可是这时候你端起杯子一看,天啊,怎么杯子是空的。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-03-13 10:02

@爱编程的大叔: 喝咖啡为此方法,杯子为list,咖啡为线程,在线程中将数据添加到list中,log后有数据,而在线程外的list一直在等待,所以为空,可以这样理解吗?

..科 | 园豆:204 (菜鸟二级) | 2015-03-13 10:13

@..科: 还没有等到线程执行就端杯子看,是这样吗?

..科 | 园豆:204 (菜鸟二级) | 2015-03-13 10:23

@..科: 这个说对了。你要是不明白线程干啥的,就别用了,多看看书再用。

线程相关内容可以写一大章书。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-03-13 10:30

@爱编程的大叔: 但是网络请求要在线程里面操作,有办法解决这个问题没?

..科 | 园豆:204 (菜鸟二级) | 2015-03-13 10:43

@..科: 办法当然是有的,看书啊,你啥都不知道,怎么跟你说呢。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-03-13 11:00

@爱编程的大叔: 好吧,我看看书,那谢谢你的指导。

..科 | 园豆:204 (菜鸟二级) | 2015-03-13 11:01

@..科: 要不你说一下思路,我也有目标不是。拜托

..科 | 园豆:204 (菜鸟二级) | 2015-03-13 11:08

@爱编程的大叔: 大叔就是不一样。

xiaocong_soft | 园豆:556 (小虾三级) | 2015-03-13 13:38
其他回答(1)
0

thread.start()这句话就是启动线程,你完全可以判断lineData== null{thread.start();}这样就判断list了

代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-03-13 15:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册