JAVA + 非同步請求 + 《AsyncTask》 + 介面回撥
阿新 • • 發佈:2019-02-09
package Utils; import android.os.AsyncTask; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class Mytask extends AsyncTask<String,Void,String> { privateINxBean iNxBean; //傳遞介面物件 public Mytask(INxBean iNxBean) { this.iNxBean = iNxBean; } @Override protected String doInBackground(String... strings) { try { URL url=new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); urlConnection.setRequestMethod("GET"); if (urlConnection.getResponseCode()==200){ InputStream inputStream = urlConnection.getInputStream(); ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream(); byte[] arr = new byte[1024]; int len=0; while ((len=inputStream.read(arr))!=-1){ byteArrayOutputStream.write(arr,0,len); } return byteArrayOutputStream.toString(); } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); iNxBean.getJson(s); } //定義介面 public interface INxBean{ void getJson(String jsonstr); } } //回到Activity的頁面 回撥介面
Mytask mytask = new Mytask(new Mytask.INxBean() { @Override public void getJson(String jsonstr) { //解析字串 Gson gson = new Gson(); User_Bean user_bean = gson.fromJson(jsonstr, User_Bean.class); if (opertype==1){ data.clear(); } data.addAll(user_bean.getData()); setAdapter1(); plv.onRefreshComplete(); } }); mytask.execute(url);