看板 AndroidDev 關於我們 聯絡資訊
: 你拍完一張用sleep去等這樣是不對的,因為你不知道1.5秒內 : 能不能處理完,正確做法是用一個ConditionVariable來擋住, : 等你的PictureCallback處理完之後再放他過去。 : : test.run(); : : 的方式去觸發執行 應該已經是幫我建好了獨立的thread才對? : : 這方面請問應該怎麼處理? : 這個和你用不用Thread沒有什麼關係... 後來發現的確是thread的問題 如果迴圈運作沒有自己跑一個thread 超過等待時間 程式就會出問題 而我那種寫法也不是正確的thread呼叫方式 copy網路上的貼上去就解決了 (new CaptureThread()).start(); 至於PictureCallback該等多少時間 我想我的處理方式的確不是很好 不過至少以我的手機和記憶卡速度 設定1秒等待 是都能正常運作.... 但是的確應該要找更完善的方法就是 你說的設條件flag來卡流程等待 我有試過用 while (flag == false) {} 來卡 不過怪怪的 沒辦法 再研究看看 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.5.213
asilzheng:你原本的程式碼 怎麼會執行Thread.run()? 01/27 12:36
Java跟Android程式設計我不熟阿... 只是為了寫特定目地的程式 拼拼湊湊 東抄西抄 觀念上很薄弱 幾乎快等於零...
LaPass:別用 while (flag == false) {} ...... 01/27 12:54
LaPass:用wait() notifityAll() 我忘記怎麼拼了,但是我最常看到這 01/27 12:55
LaPass:種寫法。另外,我之前用的方法是在while內加個Thread.sleep 01/27 12:56
LaPass:但是這種方法,效能上會有問題。 01/27 12:57
※ 編輯: erspicu 來自: 219.70.5.213 (01/27 13:08) http://ideone.com/z2sAp 最後版本... 可以用這程式來拍看看煙火了 暫時先用while(flag){}的方法 可能是當初哪裡沒寫好 後來這種等待方法ok了? wait() notifityAll()再來研究看看 兩個原因會造成當掉 一個是迴圈等待太久 另一個是沒有等待Callback 造成資源衝突 ※ 編輯: erspicu 來自: 219.70.5.213 (01/27 16:16)
iincho:你先查一下condition variable怎麼用吧... 01/27 23:50
iincho:你說的會當是ANR? 01/27 23:54
erspicu:喔喔 剛查一下 原來有別人已經做好的輪子可以用 01/28 00:45
erspicu:至於ANR 我不知道是啥耶 01/28 00:45
erspicu:剛查一下 我知道anr是啥了 其中之一的確是ANR問題 沒錯 01/28 00:46
iincho:哪個不是程式當掉.... 01/28 11:22
LaPass:居然在主執行緒裡放無限迴圈.... = =" 01/28 12:11