FC2ブログ

[Android] android.os.NetworkOnMainThreadException の例外が発生した

■問題の現象
Service内にサーバーにアクセスしてメールを取得する処理を実装したら、
サーバーへアクセスするところで、

android.os.NetworkOnMainThreadException

の例外が発生した。

※問題が発生するのは、Android4.Xの端末でAndroid2.Xの端末では
 例外は発生しない。


■原因
ネットワークへの接続処理をメインスレッドで行っていたことが原因。
Android2.X系までは、Android側にチェック機能が入っていなかったので例外とはならなかったが、
Android3.X系以降はチェックが入り、メインスレッドで通信しようとすると例外となる。


■対応案
通信処理はバックグラウンドで実行するようにする。
AsyncTaskLoader(AsyncTask)などで実装するケースも多いが、
今回は、単純にスレッドクラス(Thread)を作成して、
別クラスでサーバーアクセスを行った。




コメントの投稿

非公開コメント

プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Counter