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