1. 程式人生 > >AsyncTask實現非同步執行

AsyncTask實現非同步執行

// AsyncTask< String,Integer,String>
//第一個泛型 代表你要給子執行緒傳的東西
//第二個泛型 代表任務執行的進度  用Integer
//第三個泛型 代表解析完成後子執行緒返回的值,以及主執行緒接受的值
//===================================
///第一:繼承AsyncTask,然後寫三個泛型,< String,Integer,String>
public class MyAsyncTask  extends AsyncTask< String,Integer,String> {


    @Override
    protected String doInBackground(String... strings) {
        //代表子執行緒
        //第二步:利用子執行緒請求資料
        return Http.requestHttpGet(strings[0]);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        //主執行緒
        //5呼叫
        mCallbackS.getData(s);
    }
    //第三步:介面回撥=================第七部/:進入MainActivity
    //1建立介面
    public interface  CallBackS{
        //2抽象方法
        void getData(String str);
    }
    //3寫個屬性
    private CallBackS mCallbackS;
    //4寫一個set方法
    public void setmCallbackS(CallBackS mCallbackS) {
        this.mCallbackS = mCallbackS;
    }
}


 //第四步:建立MyAsyncTask物件
                MyAsyncTask task = new MyAsyncTask();
                //第五部:6 註冊介面
                task.setmCallbackS(MainActivity.this);
                //第六步: 請求資料(引數 : 介面 )
                task.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");
                //這個時候開始請求資料,資料請求完成後會返回返回到介面回撥的方法中