Toni Joe
Toni Joe

Reputation: 8407

How to prevent multiple intents from running at the same time in Android

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

Answers (1)

Stefan
Stefan

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

Related Questions