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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

AsyncTask使用方式一

發布時間:2025/4/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AsyncTask使用方式一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android提供了兩種主要的異步操作方法:

第一種就是采用Thread執行內容,然后通過handler來獲知線程結果以更新UI,但是這種方式對線程的安全性需要程序員來進行控制;

第二種是采用AsyncTask,這種方式是線程安全的,當然也意味著效率會比第一種稍低,不過還是可以接受的。

但是在TabActivity中用AsyncTask方法進行異步操作的時候,如果在超過兩層的activity中使用了 ProgressDialog,就會存在問題。這個大概是Android本身的bug,或者不叫bug,而是一種限制。對于這種情況,目前沒有什么很好的 正規解決方案,不過在大部分情況下可以采用如下workaround來解決。

public class MyActivity extends Activity {protected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//判斷是否存在父ActivityContext c;if(getParent() != null) c = getParent();else c = this;AsyncClass async = new AsyncClass (c);async.execute();}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();}class AsyncClass extends AsyncTask {private Context context;private ProgressDialog progressDlg;public AsyncLoadData(Context c) {this.context = c;}@Overrideprotected String doInBackground(Void... params) {// TODO Auto-generated method stubfillData();return null;}protected void onPostExecute(String result) {//Do some workprogressDlg.cancel();}protected void onPreExecute() {progressDlg = new ProgressDialog(context);progressDlg.setMessage("ing...");progressDlg.setCancelable(false);progressDlg.show();}}} 主要思路很簡單,就是由于是超過兩層的Activity中會出問題,所以就使用父級的Context,這樣就能workaround了。

轉載于:https://www.cnblogs.com/cpf20072008/archive/2011/03/27/Android.html

總結

以上是生活随笔為你收集整理的AsyncTask使用方式一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。