I want to keep a single instance of every Activity
I start in my application. The launchMode singleTask
was an option but it is working for only one Activity
.
I want
Activity
if there is no instance and it is called.Activity
is present already then
that instance will brought to front without creating a new instance
of that Activity
.Activity
.Activity
does guarantee that it will be always on the top of the history stack.My work until now:
I got many suggestions which are not valid for my case, so I want to point these out so that no other person would give the same suggestion.
launchMode
to singleTop
and this works only if the Activity
is at the top of the history stack. onNewIntent() only gets called if Activity
is at the top of history stack. and in my case the Activity
may be at any position in stack. So this is not working.When you launch an Activity
, do it like this:
Intent intent = new Intent(this, MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
If an instance of this Activity
already exists, then it will be moved to the front. If an instance does NOT exist, a new instance will be created.
You can set the android:launchMode of your activity to singleTop In this case the if the activity already exists, new intents will bring it to front will be delivered to the activity's onNewIntent() http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
This will work if your activity is on the top of the stack.
if you want to have a single instance of the activity, then you can set your launchMode to singleTask, but this is not recommended as it will make your activity reside in a separate task , which can be confusing to the users.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With