[問題] StrictMode與ANR
最近在做的專案需要做很多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
04/15 20:17, 1F
→
04/15 20:18, , 2F
04/15 20:18, 2F
→
04/15 20:19, , 3F
04/15 20:19, 3F
→
04/15 20:20, , 4F
04/15 20:20, 4F
→
04/15 20:21, , 5F
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
04/16 09:02, 6F
推
04/19 01:06, , 7F
04/19 01:06, 7F
→
04/21 01:36, , 8F
04/21 01:36, 8F