課程
/移動開發
/Android
/Android中的Http通信
有個問題,老師這個無論如何都會打印下載成功的消息,因為不管有沒有下載你都對主線程發送了消息,而且count都會增加1,我感覺有問題!
2016-05-15
源自:Android中的Http通信 3-1
正在回答
仔細看看還真是這樣啊,看來學java不能鉆牛角尖!上一課寫的代碼也是這個問題。對,寫錯了
是這樣的。。我第一次RandomAccessFile 里的?seek這個沒有指定但還是提示成功的,第二次沒有判斷
是否是最后一個線程
if(i==2){ ? ?end = contentLength;}這個,但結果顯示都是成功的。
3個線程,每次成功,才會發生一個message給handleMessaage,count才會加1,這里的代碼并沒有循環加1,所以不可能出現你說的問題
首先sendMessage(message)是放在下載語句之后,如果下載過程出錯,會拋出異常,程序中止,sendMessage(message)不會被執行;也就是說,sendMessage(message)執行了肯定是下載成功了,而只有當sendMessage(message)執行了,handleMessage才會執行,count才+1,即只有下載成功了count才+1。
總體上:執行完下載語句→sendMessage(message)→handleMessage()→count+1.
關鍵是理解handleMessage()并不會自動執行,只有sendMessage(message)之后才會調用它。
舉報
了解Android-http網絡編程應用,常見忘了請求相關應用
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2022-03-25
仔細看看還真是這樣啊,看來學java不能鉆牛角尖!上一課寫的代碼也是這個問題。對,寫錯了
2016-08-15
是這樣的。。我第一次RandomAccessFile 里的?seek這個沒有指定但還是提示成功的,第二次沒有判斷
是否是最后一個線程
if(i==2){
? ?end = contentLength;
}這個,但結果顯示都是成功的。
2016-07-28
3個線程,每次成功,才會發生一個message給handleMessaage,count才會加1,這里的代碼并沒有循環加1,所以不可能出現你說的問題
2016-05-19
首先sendMessage(message)是放在下載語句之后,如果下載過程出錯,會拋出異常,程序中止,sendMessage(message)不會被執行;也就是說,sendMessage(message)執行了肯定是下載成功了,而只有當sendMessage(message)執行了,handleMessage才會執行,count才+1,即只有下載成功了count才+1。
總體上:執行完下載語句→sendMessage(message)→handleMessage()→count+1.
關鍵是理解handleMessage()并不會自動執行,只有sendMessage(message)之后才會調用它。