-
AsyncTask異步任務(wù)的三個(gè)參數(shù)查看全部
-
老師,url還可以用嗎查看全部
-
doInBackground:異步執(zhí)行的后臺(tái)線程操作,耗時(shí)操作放在這個(gè)函數(shù)里執(zhí)行; onProgressUpdate:通過(guò)它可以知道當(dāng)前的后臺(tái)執(zhí)行進(jìn)度。它把進(jìn)度結(jié)果返回給publishProgress()方法以顯示。查看全部
-
AsyncTask抽象類中的三個(gè)泛型參數(shù)含義:查看全部
-
注意事項(xiàng)。 doInBackground()方法運(yùn)行在非主線程,其他三個(gè)方法運(yùn)行在主線程,所以可以在doInBackground做異步操作,在其他三個(gè)方法中更新UI。 正是因?yàn)橛辛薿nProgressUpdate()和onPostExcute()方法,才可以在異步處理的過(guò)程中更新UI。查看全部
-
Async Task子類的回調(diào)方法。 doInBackground onPreExecute onPostExecute onProgressUpdate查看全部
-
AsyncTask子類的回調(diào)方法查看全部
-
AsyncTask子類的回調(diào)方法查看全部
-
老師講的邏輯很清楚,我覺(jué)得這部視頻教程首先過(guò)一遍然后把所有案例全部理解過(guò)一遍 基本上就可以出山了查看全部
-
目標(biāo)任務(wù)查看全部
-
異步任務(wù)的幾個(gè)方法查看全部
-
異步任務(wù)的三個(gè)參數(shù)查看全部
-
AsyncTask的注意事項(xiàng) 還有一個(gè): doInBackground()方法運(yùn)行在非主線程,其他三個(gè)方法運(yùn)行在主線程,所以可以在doInBackground做異步操作,在其他三個(gè)方法中更新UI。 正是因?yàn)橛辛薿nProgressUpdate()和onPostExcute()方法,才可以在異步處理的過(guò)程中更新UI。查看全部
-
異步任務(wù)——AsyncTask 4. 進(jìn)度的實(shí)時(shí)更新 在doInBackground()方法中調(diào)用publishProgress()方法可以將我們處理任務(wù)的進(jìn)度反饋處理。 protected Void doInBackground(Void... params) { for (int i = 0; i<100; i++) { publishProgress(i); try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } } return null; } 注意,由于在AsyncTask中,只有doInBackground()方法是工作在子線程中的,所以我們可以放心地在onProgressUpdate()方法中更新UI。 5. 取消一個(gè)AsyncTask 使用AsyncTask創(chuàng)建線程執(zhí)行任務(wù)的時(shí)候,我們需要使得創(chuàng)建的線程的生命周期和我們Activity的生命周期一致。 即,當(dāng)我們的Activity不可見(jiàn)的時(shí)候,我們需要及時(shí)“取消”我們AsyncTask中正在執(zhí)行還沒(méi)有執(zhí)行完的任務(wù),這樣,等下次Activity出現(xiàn)的時(shí)候,我們才能給用戶開(kāi)始執(zhí)行新任務(wù)的體驗(yàn)。否則,我們后臺(tái)需要執(zhí)行完上次的任務(wù)才能執(zhí)行新的任務(wù),這樣會(huì)給我們用戶一個(gè)“長(zhǎng)時(shí)間等待無(wú)響應(yīng)”的感覺(jué)。 通過(guò)調(diào)用mAsyncTask.cancel()方法可以取消AsyncTask的執(zhí)行,但是注意這只是發(fā)送了一個(gè)cancel的請(qǐng)求,將對(duì)應(yīng)的AsyncTask標(biāo)記為cancel狀態(tài),并沒(méi)有將其停止掉。 需要在doInBackground()方法中持續(xù)判斷這個(gè)標(biāo)記位 protected Void doInBackground(Void... params) { for (int i = 0; i<100; i++) { publishProgress(i); if(isCancelled()) break; } return null; }查看全部
-
異步任務(wù)——AsyncTask 獲取一個(gè)網(wǎng)絡(luò)圖片 1. doInBackground()方法 protected Bitmap doInBackground(String... params) { //獲取傳遞進(jìn)來(lái)的參數(shù) String url = params[0]; Bitmap bitmap = null; URLConnection connection; InputStream is; try { connection = new URL(url).openConnection(); is = connection.getInputStream(); BufferedInputStream stream = new BufferedInputStream(is); //通過(guò)decodeStream解析輸入流,轉(zhuǎn)換成Bitmap對(duì)象 bitmap = BitmapFactory.decodeStream(stream); is.close(); stream.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //返回bitmap return bitmap; } 2. 重寫(xiě)onPreExecute()、onPostExcute() 在onPreExecute()中做一些初始化操作 protected void onPreExecute() { super.onPreExecute(); mProgressBar.setVisibility(View.VISIBLE); } onPostExcute()方法中做一些后續(xù)操作 protected void onPostExecute(Bitmap result) { super.onPostExecute(result); mProgressBar.setVisibility(View.GONE); mImageView.setImageBitmap(result); } 3. 在主線程中調(diào)用new MyAsyncTask().execute(URL)開(kāi)啟一個(gè)異步任務(wù)查看全部
舉報(bào)
0/150
提交
取消