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;
请问何为线程?
程序运行的顺序执行流
不是很懂
@..科: 你坐在办公室里面,想要喝杯咖啡,发现没有咖啡,只有杯子。
客人在,不好走开,咋办呢?叫小王过来,这是100元,你到楼下超市帮我买一盒鸟窝速溶咖啡(这就是线程)。然后你继续和客户聊天,等小王回来再冲咖啡。
关键一个字是等。当然等的时候你可以继续聊天。
可是这时候你端起杯子一看,天啊,怎么杯子是空的。
@爱编程的大叔: 喝咖啡为此方法,杯子为list,咖啡为线程,在线程中将数据添加到list中,log后有数据,而在线程外的list一直在等待,所以为空,可以这样理解吗?
@..科: 还没有等到线程执行就端杯子看,是这样吗?
@..科: 这个说对了。你要是不明白线程干啥的,就别用了,多看看书再用。
线程相关内容可以写一大章书。
@爱编程的大叔: 但是网络请求要在线程里面操作,有办法解决这个问题没?
@..科: 办法当然是有的,看书啊,你啥都不知道,怎么跟你说呢。
@爱编程的大叔: 好吧,我看看书,那谢谢你的指导。
@..科: 要不你说一下思路,我也有目标不是。拜托
@爱编程的大叔: 大叔就是不一样。
thread.start()这句话就是启动线程,你完全可以判断lineData== null{thread.start();}这样就判断list了