然而将解析操作写在doInBackground方法中不会报错。
PHP中文网2017-04-17 17:38:35
これで終わりです。元の投稿者の結果 (InputStream) は、リモート リソースを指す InputStream です。この時点で、InputStream からデータを読み取ることは、リモート リソースを読み取ることと同じであるため、エラーが報告されます。根本的な理由は、Android の「ネットワーク リクエストはメイン スレッドで実行できない」という制限が、接続 ((HttpURLConnection)url.openConnection()) に限定されるものではなく、データ プロセス全体に及ぶためです。
したがって、推奨されるアプローチは、InputStream 解析全体を doInBackground に配置し、ビジネス ロジックに準拠するエンティティ クラスを doInBackground に返すことです。
高洛峰2017-04-17 17:38:35
解析は時間のかかる操作なので、onPostExecute
がメインスレッド、doInBackground
がサブスレッドに配置する必要があります。
メインスレッドで時間のかかる操作を実行したため、エラーが報告されるのは通常のことです。