私はhandleMessage
アンドロイドハンドラのhandleMessage
答えて
でメインスレッドの例外にネットワークを取得していますなぜあなたは、メインスレッドで、その上に作業中のハンドラのインスタンスを作成しますので、誰かが教えてもらえます。ヘンドラーでは、メインスレッドでソケット接続(インターネット接続)を作成しようとします。
/**
* Default constructor associates this handler with the {@link Looper} for the
* current thread.
*
* If this thread does not have a looper, this handler won't be able to receive messages
* so an exception is thrown.
*/
public Handler() ;
私はあなたが新しいスレッドを使用してみてくださいによるToast.makeText(getApplicationContext(), count, Toast.LENGTH_LONG).show();
に例外が発生していると思います:
runOnUiThread(new Runnable() {
@Override
public void run() {
showToast(MessageBuilder.SUCCESSFUL_COMMENT);
}
});
あなたがバックグラウンドであなたのハンドラを実行する必要があります。これにはLooper
を使用できます。 https://developer.android.com/reference/android/os/Looper.htmlを参照してください。
あなたはこれを試みることができる:
Thread thread = new Thread() {
@Override
public void run() {
super.run();
Looper.prepare();
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
try {
String tmp = msg.obj.toString();
InetAddress serverAddr = InetAddress.getByName(serverIP);
socket = new Socket(serverAddr, serverPort);
OutputStream outStream = socket.getOutputStream();
PrintWriter writer = new PrintWriter(outStream);
writer.write(tmp);
writer.flush();
InputStream inStream = socket.getInputStream();
byte[] xxx = new byte[20];
int count = inStream.read(xxx);
// Toast.makeText(getApplicationContext(), count, Toast.LENGTH_LONG).show();
outStream.flush();
outStream.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
Looper.myLooper().quit();
}
}
};
handler.removeCallbacks(this);
Looper.loop();
}
};
thread.start();
はまた、あなたは例外RuntimeErrorが発生します、あなたのハンドラで
Toast
を示しています。ハンドラーからトーストを取り出してください。
これはどのように見えるのですか?自分のコードに基づいてこれを表示できますか? – SimpleCoder
私はこれを私の勝利で解決しようとしていましたが、私はいつもInputstreamによって引き起こされた "ネットワーク上のメインスレッド例外"を持っています – SimpleCoder
@SimpleCoder答えを更新しました。 –
- 1. スレッドとハンドラhandleMessage()のパフォーマンス
- 2. アンドロイドハンドラはスレッドセーフですか?
- 3. アンドロイドハンドラが最終変数として
- 4. アンドロイドハンドラが一定期間メッセージを待つ
- 5. ループでアンドロイドハンドラを使う方法
- 6. アンドロイドハンドラがヌルオブジェクト参照エラーを返しました
- 7. Spring amqp:MessageListenerAdapterでMessagePropertiesを読み取るにはどうすればいいですか?
- 8. CXFログSOAP出力
- 9. Grails例外フィルタリング、RabbitMQプラグイン
- 10. JRuby:同じ名前の2つのメソッドを持つJavaクラスを拡張します
- 11. インタフェースを定義するためにmpl :: inherit_linearlyを使用することの意義
- 12. CXF Webサービスでws-securityヘッダーを無視する方法
- 13. Android:なぜハンドラは実行可能ファイルを投稿するのですか?
- 14. スレッド処理中のルーパとwhileループの違いは何ですか?
- 15. 一部の式のジェネリック型がF#パターンマッチングでobjにマッチするのはなぜですか?
- 16. 子クラスからWNDPROC関数を呼び出す
- 17. カスタムにSoapFaultリゾルバのトリガーが、たSOAPBodyににSoapFaultを見つけない
- 18. 私はチャットのプライムフェイスの例を使用しています。明らかにチャンネルを開くときに例外があります
- 19. HandlerThreadはどのようにメッセージを処理しますか?
- 20. ジェネリックメッセージレシーバのさまざまなクラスタイプに異なるメソッドを呼び出すにはどうすればよいですか?
- 21. JSONリクエストのデータフィールドにアクセスする方法JAX-RSでFlexクライアントから送信
- 22. アンドロイドのハンドルメッセージを再入力することはできますか?
- 23. Android MediaPlayerエラー
- 24. Apache CFXカスタムLoggingInInceptceptorがオーバーライドされていません
- 25. UWP Webview InvokeScriptAsyncがJS関数に間違った引数を渡します
- 26. なぜこのメソッドはパラメータを必要としませんか?
- 27. 同じフェーズで複数のCXFインターセプタを持つことができますか
- 28. このハンドラクラスは静的でなければならないか、リークが発生する可能性があります。finalハンドラ
- 29. soapMessageContext - Axis Handlerで "HttpServletRequest"を取得する
- 30. CXFインターセプタでHTTP RESPONSE CODEを取得する方法は?
AsyncTasksを使用してみてください。これははるかに簡単でクリーンです。 –
多分それは問題ですが、 'AsyncTask'の' doInbackground'で 'onPictureTaken'を使用すると' onPictureTaken'と同じエラーが発生します – SimpleCoder
logcatログを共有できますか? –