[問題] 網路傳輸時的問題

看板AndroidDev作者 (jun)時間13年前 (2011/04/11 14:44), 編輯推噓1(1012)
留言13則, 2人參與, 最新討論串1/1
開發層: (應用/框架/庫/核心) 應用 問題: 請教板上高手們一個ProgressDialog的問題, 我現在的程式是需要拍一張圖然後上傳至網路(socket), 但因為上傳的時間很長, 所以在等候時我寫了ProgressDialog來請使用者稍後, 部分程式如下: case UPLOAD_ID: Log.e(TAG, "select upload"); // 查詢對話框 ,待修改 progressDialog = ProgressDialog.show(this, "請稍候…","影像傳輸中"); //onProgressDialog = true; try{ Log.e(TAG, "socket"); mySocket(); } catch (Exception e) { // show if socket fail Toast.makeText(this, "上傳失敗.", Toast.LENGTH_LONG).show(); } 問題發生了, 他並不會在傳輸開始的時show出請稍候的ProgressDialog, 而是在傳完資料後才閃一下請稍候的畫面, 想請教各位高手這是什麼情況呢? 另外請教一個問題, 就是在傳輸時如果碰觸到螢幕的話, 就會出現程式強制關閉的對話框, 如果選擇等候的話他還是會繼續執行, 請問有沒有什麼好建議可以解決這些問題呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.79.59.62

04/11 14:54, , 1F
代表你上傳的時候應該沒有另外開一個thread做上傳
04/11 14:54, 1F

04/11 14:54, , 2F
而是直接用了UI thread做上傳 所以程式會沒有反應
04/11 14:54, 2F

04/11 14:55, , 3F
請把上傳的動作放到另外一個class extends Thread
04/11 14:55, 3F

04/11 14:56, , 4F
然後在ui裡面start這個thread 再show等待對話框
04/11 14:56, 4F

04/11 14:57, , 5F
等到upload完 再用handler傳訊息回ui thread結束對話框
04/11 14:57, 5F

04/11 14:58, , 6F
如果沒有thread的概念建議先去看看書或網站介紹
04/11 14:58, 6F

04/11 14:59, , 7F
寫這種要等的東西一定要有thread的概念
04/11 14:59, 7F

04/11 15:01, , 8F
簡單來說你的問題就是你讓跟人互動的thread忙著上傳
04/11 15:01, 8F

04/11 15:01, , 9F
沒空理使用者的動作 也沒空開對話框
04/11 15:01, 9F

04/11 15:02, , 10F
謝謝t大,真的是該好好找一本書來研讀一下! 謝謝您^^
04/11 15:02, 10F

04/11 15:02, , 11F
所以你必須要開第二個thread讓它跟ui thread同時跑
04/11 15:02, 11F

04/11 15:03, , 12F
這樣它才有空讓對話框顯示出來 跟對觸碰有反應
04/11 15:03, 12F

04/11 15:06, , 13F
原來如此! 那我知道問題所在了~真的謝謝您!
04/11 15:06, 13F
文章代碼(AID): #1DegDSi_ (AndroidDev)
文章代碼(AID): #1DegDSi_ (AndroidDev)