ASyncTask
Android の new を次のタスクに強制する方法を考えていました。インターネットからコンテンツをロードする複数の があると想像してください。たとえば、私の場合、とASyncTask
のすべてのオブジェクトをプリロードします。すべてのデータは、中央のアプリケーション モデルにロードされます。現在のキューは次のようになると思います (ただし、まだキューとして管理していません)。DataModelA
DataModelB
DataModelC
1. DataModelA-Object1
2. DataModelA-Object2
3. DataModelA-Object3
4. DataModelB-Object1
5. DataModelB-Object2
6. DataModelB-Object3
7. DataModelB-Object4
8. DataModelC-Object1
9. DataModelC-Object2
10. ...
私は次のようにタスクを開始します。
DataModelALoaderTask task = new DataModelALoaderTask();
task.execute("http://my-rest-api.com/datamodel/a");
// and the same for the other tasks
...
タスク クラスは次のようになります。
private class DataModelALoaderTask extends AsyncTask<String, Void, List<DataModelA>> {
@Override
protected List<DataModelA> doInBackground(String... params) {
String data = params[0];
return DataModelAContentProvider.loadContentFromUrl(data);
}
@Override
protected void onPostExecute(List<DataModelA> models) {
// finally add the loaded content to the central application data model
...
}
}
私が達成したいこと:
GUI 内で、ボタンをクリックして、モデルの 1 つの部分を最初に強制的にロードするのが好きです。これは、今すぐ表示する必要があるためです。通常、これはすでにキューに入っているタスクですが、私の場合は、DataModelC-Object2
他のすべてがロードされる前に最初にロードするなど、新しいタスクを開始することもできます。キューは多数のオブジェクトをロードする可能性があるため、単一のタスクを再スケジュールするか、すぐにジョブを実行する新しいタスクを開始することが理にかなっています。
どうすればそれを処理できますか?さらにコード スニペットが必要な場合は、お知らせください。
前もって感謝します。
敬具、マイケル
更新:どういうわけか私の質問はこの投稿に関連しているようです。それが唯一の方法ですか?または、を使用して並列実行タスクを単純に開始できTHREAD_POOL_EXECUTOR
ますか? それをどのように使用しますか?