最大5つの個別のインテントを使用するのではなく、長いプロセスで単一のインテントを使用することの利点とコストを評価しようとしています。
私のアプリのユーザーは、データベースに解析されるWebからレコードをダウンロードします。ユーザーは、いつでも1〜5人のレコードをダウンロードできます。
私はアプリを次のように設定しました:
private OnClickListener mySubmitOnClick = new OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<String> idsOfRecordsArray = getIdsOfRecordsToDownload();
Intent intentToRetrieve = new Intent(getActivity(),
RetrieveData.class);
Messenger messenger = new Messenger(handler);
intentToRetrieve.putExtra("MESSENGER", messenger);
intentToRetrieve.putStringArrayListExtra ("IdList",
idsOfRecordsArray);
v.getContext().startService(intentToRetrieve);
showDialog("Some Message");
}
}
これは機能しましたが、データの解析に時間がかかるため、タイムアウトエラーが発生することがありました。
私はそれをこれに変更しました:
private OnClickListener mySubmitOnClick = new OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<String> idsOfRecordsArray = getIdsOfRecordsToDownload();
while(iCount < idsOfRecordsArray.size()) {
ArrayList<String> currentID = new ArrayList<String>();
currentAthleteID.add(athleteIdArray.get(iCountAthletes));
Intent intentToRetrieve = new Intent(getActivity(),
RetrieveData.class);
Messenger messenger = new Messenger(handler);
intentToRetrieve.putExtra("MESSENGER", messenger);
intentToRetrieve.putStringArrayListExtra ("IdList",
currentID);
v.getContext().startService(intentToRetrieve);
showDialog("Some Message");
iCount++;
}
}
そのため、最大5つのインテントを同時に起動できるようになりました。これは十分に安定しているようです。ただし、進行状況ダイアログの処理は少し厄介です。ダイアログボックスを1つだけ開くと、プロセスが完了する前に閉じます。
ここでどちらがより良いアプローチであるかについての考えはありますか?それとも、他の方法のために両方を放棄する必要がありますか?