昔作成したコードを動かしてみたら、NetworkOnMainThreadExceptionが発生した。
昔は問題なく動作していたにも関わらず、だ。
原因は、Android 3.0からインターネット通信はUIスレッドでは行えなくなっている様子。
AsyncTaskか、AsyncTaskLoaderを使用しなくてはならないらしい。
Android4.0以降であれば、AsyncTaskLoaderがよいと思われる。
一時的に、下記のコードを埋め込んでおけば、例外を抑制できる。
埋め込む場所は、UIスレッドのonCreateメソッド開始直後、super.onCreateメソッド実行前。
- StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
0 件のコメント:
コメントを投稿