不加思索使用模擬器開發測試沒有問題以後就發佈到 Market,
沒想到在手機上卻怎麼樣也顯示不出來!後來查看LogCat 出現NetworkOnMainThreadException
查找 Android Developer Doc 後才知道這個問題是自Honeycomb(Android 3.0) 後開始檢查在主執行緒使用網路存取或I/O存取,
避免程式沒有回應(Application Not Responding)的情況,簡稱ANR。
當 App 開啟的時候在主執行緒中使用網路存取,Android 將會強制拋出 Exception
解決之道即是將網路存取的相關工作改藉由另一條執行緒執行即可
new Thread() {
public void run() {
//網路存取寫在這
}
}.start();
其實這個寫法不論是什麼樣的程式語言,都應該盡量採取這個作法!
避免程式使用時User以為當掉。
這次經驗發覺 Android 的開發目標還是盡可能選擇最新的版本,
避免程式在某些情況下沒有考慮到!
沒有留言:
張貼留言