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