2

NetworkOnMainThreadException の原因とその修正方法はわかっていますが、開発エクスペリエンスを向上させるために、例外をキャッチして、少なくともイベントをログに記録するか、ユーザーに警告できるようにしたいと考えています。この時点での開発者)...

奇妙なことに、私はこのコード (TCP ソケットを介して送受信するコード) をうまく使いこなせていません:

try
{
    toServer.println (msg.trim());
    resp = fromServer.readLine();
}
catch (android.os.NetworkOnMainThreadException nex)
{ ... do something here ... }

Eclipse はその例外をまったく認識しません。Android 開発者の Web サイトから例外の種類をコピーして貼り付けました。スペルが正しいと確信しています...

この例外をキャッチできない Java (おそらく) について私が知らないことはありますか??

ありがとう、R.

4

3 に答える 3

5

この例外をキャッチできない Java (おそらく) について私が知らないことはありますか??

はい、StrictModeキャッチ不能にします。いずれにしても、この例外をキャッチしないでください。代わりに、コードを でラップして、コードを正しく実装する必要がありますAsyncTask。この例外がスローされる理由は、UI スレッドをブロックしてアプリケーションの速度が低下するのを防ぐためです。

詳細については、私のブログ投稿をお読みください。

Ice Cream Sandwich がアプリをクラッシュさせる理由

于 2012-07-31T21:16:12.903 に答える
1

さて、これを私のバージョンのEclipseでテストしたところ、問題なく動作しました..使用しているAPIのバージョンを確認すると思いますか? 最小APIバージョン11が必要な例外をスローするように見えます。それ以外の場合、おそらくEclipseが原因ですか? 私が知っているのは、このコードが正しく、問題なく実行されるはずだということだけです。

于 2012-07-31T20:58:28.220 に答える
0

これがアプリケーションでのネットワーキングの最初の使用であると確信していますか?

通常その時点でサーバーに接続している場合は、NetworkOnMainThreadExceptionがスローされます。試行する前にログステートメントを追加して、表示されるかどうかを確認してください。そうでない場合は、例外が先にスローされます。

于 2012-07-31T20:48:03.257 に答える