扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

Android涓瑼syncTask鎬庝箞浣跨敤

扬州沐宇科技
2023-09-29 01:56:47
android, AsyncTask

鍦ˋndroid涓紝AsyncTask鏄竴涓敤浜庡湪鍚庡彴鎵ц寮傛鎿嶄綔鐨勭被銆侫syncTask鏄竴涓硾鍨嬬被锛屽畠鐨勪笁涓硾鍨嬪弬鏁板垎鍒槸Params锛堝惎鍔ㄤ换鍔℃椂浼犲叆鐨勫弬鏁扮被鍨嬶級銆丳rogress锛堝悗鍙颁换鍔℃墽琛岃繃绋嬩腑鍙戝竷杩涘害鐨勭被鍨嬶級銆丷esult锛堝悗鍙颁换鍔℃墽琛屽畬鎴愬悗杩斿洖鐨勭粨鏋滅被鍨嬶級銆?/p>

浣跨敤AsyncTask鐨勬楠ゅ涓嬶細

  1. 鍒涘缓涓€涓户鎵胯嚜AsyncTask鐨勫瓙绫伙紝骞舵寚瀹氭硾鍨嬪弬鏁扮殑绫诲瀷銆備緥濡傦細private class MyAsyncTask extends AsyncTask<Params, Progress, Result> {}

  2. 鍦ㄥ瓙绫讳腑閲嶅啓AsyncTask鐨勫洓涓柟娉曪細

  • onPreExecute()锛氬湪鍚庡彴浠诲姟鎵ц涔嬪墠璋冪敤锛岀敤浜庡仛涓€浜涘噯澶囧伐浣滐紝渚嬪鏄剧ず杩涘害鏉$瓑銆?/p>

  • doInBackground(Params...)锛氬湪鍚庡彴鎵ц鑰楁椂鎿嶄綔鐨勬柟娉曪紝璇ユ柟娉曞繀椤婚噸鍐欍€傚湪璇ユ柟娉曚腑鍙互閫氳繃publishProgress(Progress...)鏂规硶鍙戝竷杩涘害淇℃伅銆?/p>

  • onProgressUpdate(Progress...)锛氬湪doInBackground()鏂规硶涓皟鐢?code>publishProgress(Progress...)鍚庯紝浼氳皟鐢ㄨ鏂规硶鏉ユ洿鏂拌繘搴︿俊鎭€傚彲浠ュ湪璇ユ柟娉曚腑鏇存柊UI绛夋搷浣溿€?/p>

  • onPostExecute(Result)锛氬湪鍚庡彴浠诲姟鎵ц瀹屾垚鍚庤皟鐢紝璇ユ柟娉曠殑鍙傛暟涓?code>doInBackground()鏂规硶鐨勮繑鍥炲€笺€傚彲浠ュ湪璇ユ柟娉曚腑鏇存柊UI绛夋搷浣溿€?/p>

  1. 鍦ㄩ渶瑕佹墽琛屽紓姝ユ搷浣滅殑鍦版柟锛屽垱寤篈syncTask鐨勫疄渚嬪苟璋冪敤execute(Params...)鏂规硶鏉ュ惎鍔ㄤ换鍔°€備緥濡傦細new MyAsyncTask().execute(params);

涓嬮潰鏄竴涓ず渚嬩唬鐮侊紝灞曠ず浜嗕竴涓畝鍗曠殑浣跨敤AsyncTask鐨勪緥瀛愶細

private class MyAsyncTask extends AsyncTask<Void, Integer, String> {
@Override
protected void onPreExecute() {
// 鍦ㄥ悗鍙颁换鍔℃墽琛屼箣鍓嶈皟鐢紝鍙互鍋氫竴浜涘噯澶囧伐浣?/span>
}
@Override
protected String doInBackground(Void... voids) {
// 鍦ㄥ悗鍙版墽琛岃€楁椂鎿嶄綔鐨勬柟娉?/span>
for (int i = 0; i < 100; i++) {
// 妯℃嫙鑰楁椂鎿嶄綔
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 鍙戝竷杩涘害淇℃伅
publishProgress(i);
}
return "Task Completed"; // 杩斿洖缁撴灉
}
@Override
protected void onProgressUpdate(Integer... values) {
// 鍦╠oInBackground()鏂规硶涓皟鐢╬ublishProgress()鍚庝細璋冪敤璇ユ柟娉曟潵鏇存柊杩涘害淇℃伅
int progress = values[0];
// 鏇存柊UI绛夋搷浣?/span>
}
@Override
protected void onPostExecute(String result) {
// 鍦ㄥ悗鍙颁换鍔℃墽琛屽畬鎴愬悗璋冪敤锛屽彲浠ュ湪璇ユ柟娉曚腑鏇存柊UI绛夋搷浣?/span>
// result涓篸oInBackground()鏂规硶鐨勮繑鍥炲€?/span>
}
}

閫氳繃浠ヤ笂姝ラ锛屽氨鍙互浣跨敤AsyncTask鍦ˋndroid涓墽琛屽紓姝ユ搷浣滀簡銆?/p>

扫码添加客服微信