}
MainActivity
package com.example.asynctaskdemo; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import com.example.asynctaskdemo.bean.Info; import com.example.asynctaskdemo.utils.NetWorkUtils; import com.example.asynctaskdemo.utils.StreamTools; import com.google.gson.Gson; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; public class MainActivity extends AppCompatActivity { public static final String TAG = "MainActivity"; private ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //new Thread + Handler 用异步任务类去替换 } public void btnRequest(View v){ //isConnection 返回的true,证明网络是连接的 if(NetWorkUtils.isConnection(this)) { //有网就去请求数据 getData(); }else{ //弹出一个对话框 showNetWorkSettingDialog(); } } /** * 使用异步任务执行网络请求 * */ private void getData(){ //parameter : 放置请求连接地址以及请求参数 类型 //Progress : 进度,当你们下载文件的时候,Integer //result: 限定你所请求网络数据返回的类型是什么,String new AsyncTask<String,Void,String>(){ @Override protected void onPreExecute() { super.onPreExecute(); //就是准备加载时会执行 //时候显示数据请求的加载框 Log.e(TAG, "onPreExecute执行了" ); showLoadDialog(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //当网络数据请求完毕时会被执行 //这个方法是运行在主线程的,做UI的更新 Log.e(TAG, "onPostExecute执行了 " ); if(s != null){ //JSON 去解析json Gson gson = new Gson(); Info info = gson.fromJson(s, Info.class); // Log.e(TAG, "onPostExecute: "+info.getResult().getData().get(0).getImtro() ); //设置适配器 //lv.setAdapter(); } //隐藏进度加载对话框 dialog.dismiss(); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); //当今都更新的时候会被执行 Log.e(TAG, "onProgressUpdate执行了 " ); } @Override protected String doInBackground(String... params) { try { //耗时操作都在这里执行,子线程 Log.e(TAG, "doInBackground执行了 " ); //String...大家可以可变参数类型看作是一个数组 String path = params[0]; URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5*1000); connection.setReadTimeout(5*1000); int code = connection.getResponseCode(); if(code == HttpURLConnection.HTTP_OK){//判断服务是否成功应答 //服务成功应答 InputStream is = connection.getInputStream(); String json = StreamTools.readFromNetWork(is); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute("http://apis.juhe.cn/cook/query.php?key=ff00d7339861c7fd7d5b54b16b76422a&menu="+ URLEncoder.encode("黄焖鸡")); } /** * 展示一个加载进度对话框 */ private void showLoadDialog(){ dialog = new ProgressDialog(this); dialog.setMessage("顾晓彬玩命加载中..."); dialog.show(); } /** * 设置网络设置提示对话框 */ private void showNetWorkSettingDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("没有设置网络,请您设置网络!"); builder.setNegativeButton("取消",null); builder.setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //跳转网络设置界面 隐士意图 Intent intent = new Intent(); intent.setAction("android.settings.WIRELESS_SETTINGS"); startActivity(intent); } }); builder.create().show(); } }