看板 AndroidDev 關於我們 聯絡資訊
開發層: (應用/框架/庫/核心) 應用 問題: 請教板上高手們一個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
transwrap:代表你上傳的時候應該沒有另外開一個thread做上傳 04/11 14:54
transwrap:而是直接用了UI thread做上傳 所以程式會沒有反應 04/11 14:54
transwrap:請把上傳的動作放到另外一個class extends Thread 04/11 14:55
transwrap:然後在ui裡面start這個thread 再show等待對話框 04/11 14:56
transwrap:等到upload完 再用handler傳訊息回ui thread結束對話框 04/11 14:57
transwrap:如果沒有thread的概念建議先去看看書或網站介紹 04/11 14:58
transwrap:寫這種要等的東西一定要有thread的概念 04/11 14:59
transwrap:簡單來說你的問題就是你讓跟人互動的thread忙著上傳 04/11 15:01
transwrap:沒空理使用者的動作 也沒空開對話框 04/11 15:01
jun11108:謝謝t大,真的是該好好找一本書來研讀一下! 謝謝您^^ 04/11 15:02
transwrap:所以你必須要開第二個thread讓它跟ui thread同時跑 04/11 15:02
transwrap:這樣它才有空讓對話框顯示出來 跟對觸碰有反應 04/11 15:03
jun11108:原來如此! 那我知道問題所在了~真的謝謝您! 04/11 15:06