http://blog.youkuaiyun.com/cike110120/article/details/20061063
/**
*
* 类的用处:练习异步
* @author 巩雨松
* @date 2017/8/3
*/
public class MainActivity extends AppCompatActivity {
//声明全局变量快捷键是ctrl+alt+f
private TextView text;
private ArrayList list;
//接口地址
private String path = “”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList();
//找到控件
kongjian();
//得到路径准备解析
getServiceData();
}
//对网上的路径进行解析
private void getServiceData() {
//要想异步首先声明异步的对象
MyAsyncTask myAsyncTask = new MyAsyncTask();
//执行任务
myAsyncTask.execute(path);
}
private void kongjian() {
text = (TextView)findViewById(R.id.tv_title);
}
//写一个异步的类
//是抽象类
public class MyAsyncTask extends AsyncTask<String,Integer,String>{
//onPreExecute方法运行在主线程 在doinBackgrund之前准备工作
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(MainActivity.this,"正在加载数据请等待",0).show();
}
//重写的抽象方法
//方法运行在子线程 做耗时操作
@Override
protected String doInBackground(String... strings) {
//获取接口地址
String url = strings[0];
//创建网络请求对象
HttpClient client = new DefaultHttpClient();
//创建请求的方式
HttpGet get = new HttpGet(url);
//通过网络请求对象执行请求
try {
HttpResponse response = client.execute(get);
//判断响应码
if(response.getStatusLine().getStatusCode()==200){
//得到输入流
InputStream inputStream = response.getEntity().getContent();
//定义一个字节数组输出流
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//创建字节接收数据
byte[] buffer = new byte[1024];
//数组的长度
int len = 0;
//循环存入输出流中
while((len = inputStream.read(buffer))!=-1){
bos.write(buffer,0,len);
}
String json = bos.toString();
return json;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//onProgressUpdate 方法运行在主线程 更新进度
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
//onProExecute 方法运行在主线程 用于更新UI
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("xxx",s.toString());
try {
JSONObject js=new JSONObject(s);
JSONArray ja = js.getJSONArray("data");
for (int i =0;i<ja.length();i++){
JSONObject js2 = ja.getJSONObject(i);
String createTime = js2.getString("createTime");
Log.i("xxx",createTime);
String headImg = js2.getString("headImg");
String phone = js2.getString("phone");
String title = js2.getString("title");
String content = js2.getString("content");
//封装成对象
User user = new User();
user.setCreateTime(createTime);
user.setHeadImg(headImg);
user.setPhone(phone);
user.setTitle(title);
user.setContent(content);
list.add(user);
}
text.setText(list.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}