1. 程式人生 > >JAVA + 非同步請求 + 《AsyncTask》 + 介面回撥

JAVA + 非同步請求 + 《AsyncTask》 + 介面回撥

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> {

    private 
INxBean 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);