AndroidDev 板


LINE

TransmissionTask.java: import android.content.Context; import android.os.AsyncTask; public class TransmissionTask extends AsyncTask<Object, Void, Object> { private Context context; public TransmissionTask(Context context){ this.context = context; } @Override protected Object doInBackground(Object... params) { Object result = null; result = 網路傳輸的回傳; return result; } @Override protected void onProgressUpdate(Void... progress) { } @Override protected void onPostExecute(Object result) { Log.d("TransmissionTask", result.toString()); } } Main.java片段: Integer ret = null; final TransmissionTask task = new TransmissionTask(this); task.execute(); while(task.getStatus() != AsyncTask.Status.FINISHED){} try { ret = (Integer)task.get(); } catch (Exception e) { e.printStackTrace(); } 大家好,最近準備要用AsyncTask寫一堆網路傳輸的小工具,因為這個AsyncTask會一直重 覆使用在各個class內,所以我沒有像書中寫的,直接寫在inner class,而是寫成一個獨 立的class file。 所以我現在在Main.java使用TransmissionTask的時候,發生了一件難解的問題。原先如 果是使用inner class的話,可以直接在onPostExecute method,將後續要處理的事情放 在這個裡面。 可是現在寫成獨立的class file,變成一定要去polling task.getStatus()變成FINISHED 後,我才能使用task.get()把ret取出來。所以我就使用了while loop來做polling,不過 現在就是變成這個while loop跑不出來,造成後面的task.get()也無法使用了。 不知道大家在使用AsyncTask的時候,有沒有遇到過類似的問題呢?問了Google大神也沒 有解 囧rz -- 雜七雜八的kewang部落格 http://kewang.tw --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.3.53
1F:→ nvidia:應該用observer吧 06/18 23:19
2F:→ nvidia:怎麼會用polling 06/18 23:19
3F:→ kewang:就因為不知道怎麼用 Orz 06/19 09:11
4F:→ kewang:來研究看看,java不熟真的是有點困擾 XD 06/19 09:13
5F:推 tomap41017:請問observer是!? 06/19 09:21
6F:推 coronach:獨立寫成一個class,onPost那個先空著 06/19 11:54
7F:→ coronach:然後每個activity再寫個inner class繼承它 06/19 11:55
8F:→ coronach:只override掉onPost的函數 這樣 06/19 11:56
9F:推 tomap41017:樓上我以前也是有用過類似的作法,推移下 06/19 13:46
10F:→ tomap41017:不過多緒的東西總覺得很難切的乾淨QQ 06/19 13:46
11F:推 coronach:沒辦法...這東西就是這樣...XD 06/19 16:18
12F:→ kewang:override onPost......這我倒沒想到,不過還有更好的作法嗎 06/19 19:28
13F:推 tomap41017:我覺得暫時是一個好的做法囉!! 先用再說吧 06/19 21:41
14F:→ tomap41017:反正「重構」才是之後的重點... 06/19 21:41
15F:→ kewang:我現在就是為了重構,才要改寫這段程式 XD 06/19 21:46
16F:推 nvidia:重構是不斷在進行的行為阿 06/19 23:11
17F:推 coronach:看你在onPost裡做的事有沒有相似性...... 06/20 23:46
18F:→ coronach:全部不一樣的話,基本上沒什麼重構的餘地吧... 06/20 23:46
19F:→ tomap41017:應該是doInBG有沒有相似性吧!有才有辦法抽出superclass 06/21 00:52
20F:→ tomap41017:再次抱怨多緒很煩XD希望有優美的解法 06/21 00:53
21F:→ kewang:我的doInBG有幾個固定的模式,所以用switch去判斷 06/21 18:40
22F:→ kewang:onPost還有onPre,因為要顯示ProgressDialog,所以就真的是 06/21 18:40
23F:→ kewang:在UI thread用override的方式,這樣子應該也比較方便 06/21 18:41
24F:→ tomap41017:推樓上...另外應該是在Activity內Override而不是UIThre 06/21 23:32
25F:→ kewang:對啦,不過講UI thread好像比較專業一點 XDDD 06/22 00:08
26F:推 coronach:反正實際上onPost那個通常就是在UI Thread沒錯啊XD 06/22 00:27







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP