[問題] StrictMode與ANR

看板AndroidDev作者 (cookpro)時間12年前 (2013/04/15 20:14), 編輯推噓3(305)
留言8則, 3人參與, 最新討論串1/1
最近在做的專案需要做很多HTTP Request 剛開始做的時候對Android Thread不太熟 所以參考網路上的範例 直接把所有工作都放在onCreate做 沒有另外開Thread 然後因為範例有用StrictMode 所以也都塞進去 在模擬器上跑的時候是沒遇過ANR 但是Logcat會丟出一堆StrictMode的waring 最近對Android比較多了解 知道在main thread做網路存取其實是不合法的 想要問的是 是不是因為我用了StrictMode 所以才會避開ANR訊息呢? 換句話說 如果要寫得乾淨一點 是不該用StrictMode的 不知道我的理解是不是對的 另外 如果要避免在main thread執行網路存取 大家會推薦用thread還是AsyncTask 我需要用到的行為大概有三種 1.丟HTTP POST給server上的php 讓php去抓MySQL的資料 傳JSONArray回來 2.丟HTTP POST給server上的php 讓php去改MySQL的資料 3.抓網路上的圖片 雖然現在沒有用thread或AsyncTask 直接在main thread上硬做 靠著StrictMode沒有出現ANR 但畢竟不是長遠之計... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.187.37

04/15 20:17, , 1F
strict對programmer比較嚴格 開發時應該把它打開
04/15 20:17, 1F

04/15 20:18, , 2F
我記得只要main thread負荷太多 就會閃紅色邊框
04/15 20:18, 2F

04/15 20:19, , 3F
至於該用AsyncTask或thread 有很多考量
04/15 20:19, 3F

04/15 20:20, , 4F
AsyncTask用的priority比較低 不適合處理時間太長的工作
04/15 20:20, 4F

04/15 20:21, , 5F
如果跟UI thread完全無關 用thread比較好
04/15 20:21, 5F
謝謝回答 不過我想問 開了StrictMode以後 模擬器那邊是不是就不會顯示ANR 但logcat還是會丟錯誤出來? 而我如果用AsyncTask或thread去實作 是不是logcat就不會吃到來自Strict的錯誤了呢 ※ 編輯: hunej 來自: 1.167.191.29 (04/15 21:44) ※ 編輯: hunej 來自: 1.167.191.29 (04/15 21:45)

04/16 09:02, , 6F
why don't you google it
04/16 09:02, 6F

04/19 01:06, , 7F
請用AsyncTaskLoader
04/19 01:06, 7F

04/21 01:36, , 8F
感謝大家 會用AsyncTasks了!!
04/21 01:36, 8F
文章代碼(AID): #1HQ-yM-T (AndroidDev)