android.os.NetworkOnMainThreadExceptionとは?
バスくる1.0.6で、ようやく正常動作するようになった、、、とりあえず一安心。
度重なるアップデートで、バスくるユーザーには迷惑かけました。
不安定なバージョンをリリースしてしまって、ユーザー数減っただろうな〜と思いながらデベロッパーコンソールを確認。
するとクラッシュレポートが飛んできてる!?
android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1126) at java.net.InetAddress.lookupHostByName(InetAddress.java:385) at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) at java.net.InetAddress.getAllByName(InetAddress.java:214) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) at org.buskuru.tokyu.util.HttpUtil.getHtml(HttpUtil.java:215) at org.buskuru.tokyu.activity.StationListActivity.convertStationMap(StationListActivity.java:108) at org.buskuru.tokyu.activity.StationListActivity.onItemClick(StationListActivity.java:78) at android.widget.AdapterView.performItemClick(AdapterView.java:298) at android.widget.AbsListView.performItemClick(AbsListView.java:1163) at android.widget.AbsListView$PerformClick.run(AbsListView.java:2936) at android.widget.AbsListView$1.run(AbsListView.java:3628) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4830) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:559) at dalvik.system.NativeStart.main(Native Method)
何ですかコレ!?
調べてみると、Android3.0以上だと発生するエラーらしい。
メインスレッド(画面)からネットワーク処理するのはダメらしい。
対策はココに書いてある。
僕のスマホはAndroid2.2だから、上位バージョンで起こるエラーは、あまり気にしてなかったなあ。
3.0端末持ってないから、エミュレーターで試すか。。。