I'm having a similar issue, but related to PendingIntents via notifications.
http://groups.google.com/group/android-developers/browse_thread/thread/56a0c58dc6e1b0a1#

<http://groups.google.com/group/android-developers/browse_thread/thread/56a0c58dc6e1b0a1#>Like
you, I feel I understand the task concept laid out in docs (that
fundamentals documentation is very good) but but then doubt it when I try to
put things into practice. Setting android:launchMode="singleTask" works for
me but has the unwanted side effects described in the link above.

Tom.

2009/5/30 Michael Elsdörfer <mich...@elsdoerfer.info>

>
> I've read through the Application Fundamentals three times today (and
> I had done so before), but I still can't quite wrap my ahead around
> the task concept. Or I guess I thought I understood it, but usually,
> the results I am seeing don't match up to what I would expect to
> happen (maybe a tool to see the current tasks/activities etc. for
> debugging purposes would be a nice addition).
>
> I have multiple widgets from my provider in the Launcher desktop, and
> each is using a PendingIntent with a different URI as data (so they
> should be separate intents) to open an Activity.
>
> I want there to be only once concurrent instance of this Activity that
> the user can access. So clicking the widget (1) , pressing HOME (2),
> clicking a different widget (3), pressing BACK (4) should bring the
> user back to the Desktop.
>
> Now I did manage to do this using launchMode="singleTask" - the
> existing instance is brought to the top, onNewIntent() is called and I
> am pretty satisfied with it.
>
> However, supposedly there are other ways to achieve an equivalent
> effect (say with having the activity restarted), and I'd like to
> understand why I don't seem to be able to get them to work: In every
> case, instead of seeing the home screen after step (4) (after pressing
> BACK), I see the *previous* instance of the Activity.
>
> For example, if I read this correctly:
>
> "There's another way to force activities to be removed from the stack.
> If an Intent object includes the FLAG_ACTIVITY_CLEAR_TOP flag, and the
> target task already has an instance of the type of activity that
> should handle the intent in its stack, all activities above that
> instance are cleared away so that it stands at the top of the stack
> and can respond to the intent. If the launch mode of the designated
> activity is "standard", it too will be removed from the stack, and a
> new instance will be launched to handle the incoming intent."
> http://developer.android.com/guide/topics/fundamentals.html
>
> Then simply using using the following code to start my Activity from
> my widget should do what I want, no?
>
> Intent detailIntent = new Intent(context, ViewImageActivity.class);
> detailIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
> PendingIntent pending = PendingIntent.getActivity(context, 0,
> detailIntent, 0);
>
> So in (3) My activity should be launched using FLAG_ACTIVITY_NEW_TASK
> by the launcher, which due to process affinity would find the existing
> task (which would consist of a single instance of my Activity), and
> launch the new instance on top of it. This explains what I am seeing.
> Why doesn't FLAG_ACTIVITY_CLEAR_TOP cause the existing instance in the
> task to be replaced?
>
> Even setting android:launchMode explicitely to "standard", as
> mentioned in the doc quote above, this doesn't seem to change things.
>
> I also tried android:finishOnTaskLaunch="true", but the behaviour is
> the exact same was just described with FLAG_ACTIVITY_CLEAR_TOP (which
> seems to be the exact same as when doing neither and really starting
> an activity without any special attributes).
>
> I should mention that  If I click the same widget in (3) as I clicked
> in (1), i.e. using the same PendingIntent twice, I do get the previous
> instance brought to the front (not restarted), but again, regardless
> of whether FLAG_ACTIVITY_CLEAR_TOP or finishOnTaskLaunch are being
> used.
>
> I find this especially strange since the docs about tasks don't seem
> to mention the intent itself being relevant at all. Application
> Fundamentals does at one point say "For the default "standard" mode, a
> new instance is created to respond to every new intent", but it's not
> clear what "new intent" means then. Is triggering a PendingIntent
> multiple times through a widget not multiple "new" intents then?
>
> I also tried various combinations of the other related options, but
> pretty much got nowhere.
>
> Can anybody make sense of this?
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to