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)
留言
張貼留言