Reputation: 8407
I have this code that runs multiple delete intents in a for loop:
for(PackageModel package: packages){
Uri uri = Uri.fromParts("package", package, null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
startActivityForResult(intent, 1);
}
I want to execute some code after each intent has finished so I call the onActivityResult():
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// do something ....
}
This code seems to work perfectly except for one annoying thing: the system runs the intents first then it runs the corespondent onActivityResult() methods, something like this:
intent 1
intent 2
intent 3
....
onActivityResult() 1
onActivityResult() 2
onActivityResult() 3
....
What I want to do is to run the intent and execute its onActivityResult() directly then move to the next intent like so:
intent 1
onActivityResult() 1
intent 2
onActivityResult() 2
intent 3
onActivityResult() 3
....
I hope this was clear and thank you in advance.
Upvotes: 0
Views: 217
Reputation: 2178
(obvious code omitted)
Keep track of your packages
private List<PackageModel> mListModels; // fill these
Start first
private void deleteModel{
PackageModel m1 = mListModels.get(0);
mListModels.remove(0);
startActivityForResult(m1);
}
In the result
onActivityResult(){
if(mListModels.size > 0){
deleteModel();
}
}
Upvotes: 1