0

android docにより、タスクは 1 回しか実行できません。

UIスレッドでHttpClientを実行しようとしています。ただし、許可されるのは一度だけです。最初の起動時にまだ実行されていない別のリンクから別のデータを取得したい場合、どうすればよいですか? アプリを初めて起動したとき、すべてのデータを取得するまでに時間がかかります。この問題を解決する方法を知っている人はいますか?

4

2 に答える 2

2

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.
于 2012-11-04T09:09:07.687 に答える
2

メインスレッドでネットワーク操作を実行しています。非同期タスクを使用して、バックグラウンド スレッドでネットワーク操作を実行します (バックグラウンド スレッドで 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 スレッドはブロックされないため、ユーザー エクスペリエンスが妨げられず、コードもスレッド セーフになります。

于 2012-11-04T09:13:54.737 に答える