AsyncTask 自己的心得

本想寫一下 AsyncTask 自己看得懂的心得,上網查了一下 SDK 才發現 API 30 開始要停用了!不過因為舊程式還是可以繼續用所以還是寫一下好了,免得之後看自己的程式看不懂,哈哈。

 

1.          AsyncTask 的宣告有三個型態,對應相對的事件,依造自己的需求宣告,可以是 <String,String,String> 也可以是 <String,Integer,Boolean> 或是不需要傳值的 <void,void,void>

2.          AsyncTask 的主要事件有四個,都可以在class宣告完成後用alt + ins產生。

(1)   //開始

//一些初始值,像是 Dialog 之類的關聯

@Override

protected void onPreExecute()

(2)   //執行

//程式要執行運算,或是呼叫 WebAPI 需要等待的程序

@Override

protected Boolean doInBackground(String... executeString)

(3)   //進度

//要呈現在進度視窗的內容,一般來說會傳入百分比之類,然後選擇使用 Dialog UI 來呈現程式已完成%

@Override

protected void onProgressUpdate(Integer... Progress_Values)

(4)   //結束

//最後處理完成要回應的資訊

@Override

protected void onPostExecute(Boolean result)

3.          統整第一點及第二點的關聯,當宣告為  <String,Integer,Boolean> 的時候,

           private class myAsyncTask extends AsyncTask<String, Integer, Boolean>

(1)   第一個型態 String 指的是 excute的傳入值型態為 String,可以傳入複數。例如 myAsyncTask ().execute("A","B","C"...)

l          然後對應到執行的傳入宣告,事件內使用方法為 executeString[0],executeString[1],executeString[2] ...

l          //執行

l          @Override

l          protected Boolean doInBackground(String... executeString)

(2)   第二個型態 Integer 指的是在事件內使用 publishProgress 的傳入型態為 Integer,可以傳入複數。例如在事件內使用 publishProgress(0,1,2 ...)

l          然後對應到進度的傳入宣告,事件內使用方法為 Progress_Values[0],Progress_Values[1],Progress_Values[2] ...

l          //進度

l          @Override

l          protected void onProgressUpdate(Integer... Progress_Values)

(3)   第三個型態 Boolean 指的是程式完成時,要回傳的型態。

l          對應執行的回傳型態,以及結束的傳入型態。

l          //執行

l          @Override

l          protected Boolean doInBackground(String... executeString)

l          //結束

l          @Override

l          protected void onPostExecute(Boolean result)

 


留言

這個網誌中的熱門文章

Javascript Dialog 自訂輸入視窗 (五) 回傳資料事件及處理

RMMV 雜記 - 角色及劇情