2013年12月6日金曜日

Android:メインスレッドからはネットワークアクセスできない ~android.os.NetworkOnMainThreadException~

公知のことかもしれませんが、個人的にめちゃめちゃハマってしまったトラブルなので、メモ書きです。
Androidのアプリから、クラウドのデータベースに接続しようとしてエラーが発生。なぜか?SDKの問題?エミュレータの設定か何か????と試行錯誤した結果、
  • Android3.0以降では、メインスレッド(UIスレッド)でネットワーク処理ができない
という仕様が問題だったことが判明。解決方法は、
  • StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());を追記する
  • AsyncTaskにより別スレッドで処理をする
ということらしい。後者のほうがオススメらしいですが、そのやり方は後日。


0 件のコメント:

コメントを投稿