android docにより、タスクは 1 回しか実行できません。
UIスレッドでHttpClientを実行しようとしています。ただし、許可されるのは一度だけです。最初の起動時にまだ実行されていない別のリンクから別のデータを取得したい場合、どうすればよいですか? アプリを初めて起動したとき、すべてのデータを取得するまでに時間がかかります。この問題を解決する方法を知っている人はいますか?
android docにより、タスクは 1 回しか実行できません。
UIスレッドでHttpClientを実行しようとしています。ただし、許可されるのは一度だけです。最初の起動時にまだ実行されていない別のリンクから別のデータを取得したい場合、どうすればよいですか? アプリを初めて起動したとき、すべてのデータを取得するまでに時間がかかります。この問題を解決する方法を知っている人はいますか?
AsyncTaskで複数の操作を実行できます
protected Void doInBackground(Void param...){
downloadURL(myFirstUrl);
downloadURL(mySecondUrl);
}
AsyncTaskは1回だけ実行できます。つまり、AsyncTaskのインスタンスを作成する場合、呼び出すことができるのはexecute()
1回だけです。AsyncTaskを再度実行する場合は、新しいAsyncTaskを作成します。
MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute(); //Will work
myAsyncTask.execute(); //Will not work, this is the second time
myAsyncTask = new MyAsyncTask();
myAsyncTask.execute(); //Will work, this is the first execution of a new AsyncTask.
メインスレッドでネットワーク操作を実行しています。非同期タスクを使用して、バックグラウンド スレッドでネットワーク操作を実行します (バックグラウンド スレッドで http 要求を実行します)。
次のような非同期タスクでネットワークを実行します。
class WebRequestTask extends AsyncTask{
protected void onPreExecute() {
//show a progress dialog to the user or something
}
protected void doInBackground() {
//Do your networking here
}
protected void onPostExecute() {
//do something with your
// response and dismiss the progress dialog
}
}
new WebRequestTask().execute();
非同期タスクの使用方法がわからない場合は、次のチュートリアルを参照してください。
http://mobileorchard.com/android-app-developmentthreading-part-2-async-tasks/
http://www.vogella.com/articles/AndroidPerformance/article.html
Google の公式ドキュメントは次のとおりです。
https://developer.android.com/reference/android/os/AsyncTask.html
ダウンロード タスクを実行する必要があるときはいつでも、非同期タスクを複数回呼び出すことができます。ダウンロードするデータを指定できるように、非同期タスクにパラメーターを渡すことができます (たとえば、毎回異なる URL をパラメーターとして非同期タスクに渡すなど)。このように、モジュラー アプローチを使用すると、同じ aync タスクを異なるパラメーターで複数回呼び出して、データをダウンロードできます。UI スレッドはブロックされないため、ユーザー エクスペリエンスが妨げられず、コードもスレッド セーフになります。