android - AsyncTask进行http请求,请求到XML数据后在onPostExecute解析,为何报在主线程中执行网络请求错误。
怪我咯
怪我咯 2017-04-17 17:36:35
0
3
510

然而将解析操作写在doInBackground方法中不会报错。

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(3)
洪涛

これで終わりです。元の投稿者の結果 (InputStream) は、リモート リソースを指す InputStream です。この時点で、InputStream からデータを読み取ることは、リモート リソースを読み取ることと同じであるため、エラーが報告されます。根本的な理由は、Android の「ネットワーク リクエストはメイン スレッドで実行できない」という制限が、接続 ((HttpURLConnection)url.openConnection()) に限定されるものではなく、データ プロセス全体に及ぶためです。

したがって、推奨されるアプローチは、InputStream 解析全体を doInBackground に配置し、ビジネス ロジックに準拠するエンティティ クラスを doInBackground に返すことです。

いいねを押す +0
小葫芦

解析は時間のかかる操作なので、onPostExecute がメインスレッド、doInBackground がサブスレッドに配置する必要があります。

メインスレッドで時間のかかる操作を実行したため、エラーが報告されるのは通常のことです。

いいねを押す +0
Ty80

InputStream を取得したデータ文字列に置き換える必要があります

その後、onPostExecute() で

を解析します
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート