0

OK、StackOverflow で多くの質問を読みましたが、まだ理解できないので、新しい質問を開きます。

関数がインターネットに接続し、jsonを文字列としてフェッチするクラスを作成しました。通常の Java アプリケーションでは問題なく動作しますが、Android プロジェクトでは動作しません。

次のエラーが表示されます: android.os.NetworkOnMainThreadException

私の理解では、AsyncTaskを使用する必要がありますが、関数をそれにラップする方法がわかりません。

関数は次のようになります。

public static String get(String url){
  //connect and get data to string
  // return string
}

私が言ったように、通常の JavaApplication では正常に動作しますが、Android プロジェクトでは動作しません。

助けてくれてありがとう!

4

3 に答える 3

0

私が理解しているように、あなたが使用しているAndroidHttpClient-> UIスレッドでネットワーク操作を実行しようとすることさえできない->この目的のために別のスレッドを作成してください。AsynchTaskこの目的のために、Thread + Handlerまたはを使用するか、ここでパッケージHandlerThreadを試してみることができます。java.util.concurrent

NetworkOnMainThreadException | Android Developers
developer.android.com/... - 
Class Overview. The exception that is thrown when an application attempts to perform a networking operation on its main thread. This is only thrown for ...
于 2012-11-10T13:20:44.393 に答える
0

http://developer.android.com/reference/android/os/AsyncTask.html サンプルを見てください

 private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
}

「get」関数は、このクラスの 2 つの別個の関数に分割する必要があります

入れたいもの、入れたいもの

doInBackground

そして、受け取ったデータで何をしたいのか

onPostExecute
于 2012-11-10T13:22:57.967 に答える
0

(正しく理解しているように)AsyncTaskを拡張するスレッドメソッドを作成し、.execute().

正確にどのように設定するかはあなた次第です。これらのスレッドの回転に関するチュートリアルへのリンクは次のとおりです: http://www.vogella.com/articles/AndroidPerformance/article.html#concurrency_threads

于 2012-11-10T13:23:21.960 に答える