日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AsyncTask的基础讲解

發(fā)布時間:2023/12/4 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AsyncTask的基础讲解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//異步任務AsyncTask,只能執(zhí)行一次,在一個線程里面不能多次執(zhí)行
//耗時操作(網(wǎng)絡,數(shù)據(jù)庫操作)一般用子線程,UI界面能夠改變,Handler操作,Message

new ExamAsyncTask().execute(1,2,3);//括號里面的參數(shù)給doInBackground()
//new ExamAsyncTask().cancel(true);//調(diào)用onCancelled這個方法
}

//實現(xiàn)一個自己的異步任務類(要寫封裝類):
//<>里面的三個類,都是對應的參數(shù)類型
//參數(shù)一:要給doInBackground的變量類型,
//參數(shù)二,執(zhí)行過程中onProgressUpdate要用的參數(shù)類型,此參數(shù)是publishProgress(這里面調(diào)用),
//參數(shù)三,結果給onPostExecute要用的參數(shù)的類型
class ExamAsyncTask extends AsyncTask<Integer, String, Double>{//Params,Progress,Result
//準備執(zhí)行前調(diào)用
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.i("2", "準備執(zhí)行任務");
}

//耗時操作
@Override
protected Double doInBackground(Integer... params) {
Log.i("我的參數(shù)1", params[0]+"");
Log.i("我的參數(shù)2", params[1]+"");
Log.i("我的參數(shù)3", params[2]+"");

publishProgress("a","b","c");//調(diào)用onProgressUpdate更新界面
Log.i("3", "耗時操作");
return 100.0;
}

//更新界面UI
@Override
protected void onProgressUpdate(String... values) {//values[0]就是"abc"
super.onProgressUpdate(values);
Log.i("values[0]", values[0]);
Log.i("values[1]", values[1]);
Log.i("values[2]", values[2]);
Log.i("4", "更新界面");
}

//任務執(zhí)行完成后調(diào)用
@Override
protected void onPostExecute(Double result) {
super.onPostExecute(result);
Log.i("5", "任務完成");
Log.i("resut", ""+result);//打印出100
}

//任務取消時調(diào)用
@Override
protected void onCancelled() {
super.onCancelled();
Log.i("6", "取消任務");

}
}
}

?

使用AsyncTask類,以下是幾條必須遵守的準則:
Task的實例必須在UI thread中創(chuàng)建;
execute方法必須在UI thread中調(diào)用;
不要手動的調(diào)用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)這幾個方法;
該task只能被執(zhí)行一次,否則多次調(diào)用時將會出現(xiàn)異常;

總結

以上是生活随笔為你收集整理的AsyncTask的基础讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。