Re: [android-developers] Re: help on singleinstance launchmode

2010-06-24 Thread Vibhor Mahajan
Hello,

I am still waiting and hoping for some suggestions on single instance.

As per my experiments results, either I have not understood Google
documentation properly or its behavior is different from Google
documentation.

Kindly suggest.

Thanks,
Vibhor

On Tue, Jun 22, 2010 at 3:00 PM, Vibhor Mahajan mahajan.vib...@gmail.comwrote:

 Hello,

 Simply saying, I am trying to understand the behavior of singleinstance in
 detail. I found 2 different behaviors when a activity with singleinstance
 launchmode, launches an another activity.

 Based on your reply, I understood SINGLEINSTANCE activity is launching an
 activity in new task and because destination activity is already on top of
 desired task, task is brought to foreground and new instance is not created.
 I accept, it is special and should be used carefully.

 But, it is contradicting to results stated in my previous message. Kindly
 give suggestions for the questions in my previous message for better
 understanding.

 Thanks,
 Vibhor


 On Tue, Jun 22, 2010 at 2:07 PM, Dianne Hackborn hack...@android.comwrote:

 Yes that is working as intended, you have B and C together in their own
 task, and A can't be in it because it is single instance.

 Again, just ignore single instance unless you have a clear reason for
 using it, and then you will want to structure the rest of your interaction
 to work well with it.

 At this point I would suggest focusing questions on what you are actually
 trying to accomplish.


 On Tue, Jun 22, 2010 at 1:31 AM, Vibhor Mahajan mahajan.vib...@gmail.com
  wrote:

 Hello,

 Thanks Dianne for reply. I understood your point. But after doing some
 more tests I have confusions. Kindly provide some suggestions.

 Activity A has SINGLEINSTANCE and B  C has STANDARD launch mode.
 Execute below steps:
 1. Start A from launcher
 2. Launch B from A. (oncreate of B is called)
 3. Launch A from B. (re-starts A because A has SINGLEINSTANCE launchmode)
 4. Launch C from A. (oncreate of C is called)
 5. Launch A from C. (re-starts A because A has SINGLEINSTANCE launchmode)
 6. Launch B from A again.

 From step 6 above, instance of B is NOT CREATED instead task containing
 activity B  C comes in foreground, with last state of C (from step4)
 displayed. (because C was on top of this task).

 Similar behavior is documented in
 http://developer.android.com/guide/topics/fundamentals.html link. If it
 does, it is not in position to handle the intent, and the intent is dropped.
 (Even though the intent is dropped, its arrival would have caused the task
 to come to the foreground, where it would remain.)

 Q1) Why new instance of B is not created even though B has standard
 launch mode and also not top of destination task?

 Now if I change the implementation as below:
 Activity A has STANDARD and B has SINGLEINSTANCE launch mode.
 Repeat same steps again:
 1. Start A from launcher
 2. Launch B from A. (oncreate of B is called)
 3. Launch A from B. (a new instance of A is created, in the same task in
 which A's instance was created in step 1. Now stack is A - A)
 4. Launch B from A re-starts B.
 5. Launch A from B. (a new instance of A is created, in the same task in
 which A's instance was created in step 1. Now stack is A - A - A)

 Executing step 4  5 repeatedly, creates multiple instances of A.

 Q2) Step 3  5, B creates an intent to start A with
 FLAG_ACTIVITY_NEW_TASK. Why new instance of A is created in same task in
 which A was launched from launcher?
 Q3) Shouldn't the behavior be same as explained in previous message i.e.
 A should be brought to foreground?

 Thanks,
 Vibhor

   On Tue, Jun 22, 2010 at 10:41 AM, Dianne Hackborn hack...@android.com
  wrote:

  First, you almost certainly don't want to use singleInstance.  It is
 for very special situations, and has significant repercussions on UI flow
 that you need to understand before touching it.

 The key point about this is this statement in Launch modes
 http://developer.android.com/guide/topics/fundamentals.html#lmodes

  
 http://developer.android.com/guide/topics/fundamentals.html#lmodes*Whether
 the instance can have other activities in its task*. A singleInstance
 activity stands alone as the only activity in its task. If it starts 
 another
 activity, that activity will be launched into a different task regardless 
 of
 its launch mode — as if FLAG_ACTIVITY_NEW_TASK was in the intent. In
 all other respects, the singleInstance mode is identical to 
 singleTask.

 This means that when you launch B, it is the root of its own new task.
  When you launch B again, the task for it already exists, then the current
 task will be brought to the foreground instead of starting a new instance.
  You have effectively turned yourself into a launcher, so get the behavior
 expected for a launcher.

   On Mon, Jun 21, 2010 at 9:45 PM, Vibhor Mahajan 
 mahajan.vib...@gmail.com wrote:

  Hello,

 As per the documentation, standard and singletop differ in just one
 way, standard activity 

Re: [android-developers] Re: help on singleinstance launchmode

2010-06-24 Thread Mark Murphy
On Thu, Jun 24, 2010 at 9:40 AM, Vibhor Mahajan
mahajan.vib...@gmail.com wrote:
 I am still waiting and hoping for some suggestions on single instance.

 As per my experiments results, either I have not understood Google
 documentation properly or its behavior is different from Google
 documentation.

 Kindly suggest.

If you feel you have found a bug in the documentation, create sample
projects implementing your scenarios and post them to
http://b.android.com, preferably with a link back to this thread.

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://github.com/commonsguy
http://commonsware.com/blog | http://twitter.com/commonsguy

Android App Developer Books: http://commonsware.com/books

-- 
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


Re: [android-developers] Re: help on singleinstance launchmode

2010-06-24 Thread Dianne Hackborn
So far as I have explained what you say you are seeing is consistent with
the intended behavior, and how I believe it is documented.

You need to read through all of the documentation on launch modes, tasks,
taskAffinities, and activity stacks.  The singleInstance mode imposes
constraints on the activity that you can't understand without understanding
these other things.  As I said, it means any activity you launch outside of
the single instance activity will be launched as if you are using NEW_TASK.

On Thu, Jun 24, 2010 at 6:40 AM, Vibhor Mahajan mahajan.vib...@gmail.comwrote:

 Hello,

 I am still waiting and hoping for some suggestions on single instance.

 As per my experiments results, either I have not understood Google
 documentation properly or its behavior is different from Google
 documentation.

 Kindly suggest.

 Thanks,
 Vibhor

 On Tue, Jun 22, 2010 at 3:00 PM, Vibhor Mahajan 
 mahajan.vib...@gmail.comwrote:

 Hello,

 Simply saying, I am trying to understand the behavior of singleinstance in
 detail. I found 2 different behaviors when a activity with singleinstance
 launchmode, launches an another activity.

 Based on your reply, I understood SINGLEINSTANCE activity is launching an
 activity in new task and because destination activity is already on top of
 desired task, task is brought to foreground and new instance is not created.
 I accept, it is special and should be used carefully.

 But, it is contradicting to results stated in my previous message. Kindly
 give suggestions for the questions in my previous message for better
 understanding.

 Thanks,
 Vibhor


 On Tue, Jun 22, 2010 at 2:07 PM, Dianne Hackborn hack...@android.comwrote:

 Yes that is working as intended, you have B and C together in their own
 task, and A can't be in it because it is single instance.

 Again, just ignore single instance unless you have a clear reason for
 using it, and then you will want to structure the rest of your interaction
 to work well with it.

 At this point I would suggest focusing questions on what you are actually
 trying to accomplish.


 On Tue, Jun 22, 2010 at 1:31 AM, Vibhor Mahajan 
 mahajan.vib...@gmail.com wrote:

 Hello,

 Thanks Dianne for reply. I understood your point. But after doing some
 more tests I have confusions. Kindly provide some suggestions.

 Activity A has SINGLEINSTANCE and B  C has STANDARD launch mode.
 Execute below steps:
 1. Start A from launcher
 2. Launch B from A. (oncreate of B is called)
 3. Launch A from B. (re-starts A because A has SINGLEINSTANCE
 launchmode)
 4. Launch C from A. (oncreate of C is called)
 5. Launch A from C. (re-starts A because A has SINGLEINSTANCE
 launchmode)
 6. Launch B from A again.

 From step 6 above, instance of B is NOT CREATED instead task containing
 activity B  C comes in foreground, with last state of C (from step4)
 displayed. (because C was on top of this task).

 Similar behavior is documented in
 http://developer.android.com/guide/topics/fundamentals.html link. If
 it does, it is not in position to handle the intent, and the intent is
 dropped. (Even though the intent is dropped, its arrival would have caused
 the task to come to the foreground, where it would remain.)

 Q1) Why new instance of B is not created even though B has standard
 launch mode and also not top of destination task?

 Now if I change the implementation as below:
 Activity A has STANDARD and B has SINGLEINSTANCE launch mode.
 Repeat same steps again:
 1. Start A from launcher
 2. Launch B from A. (oncreate of B is called)
 3. Launch A from B. (a new instance of A is created, in the same task in
 which A's instance was created in step 1. Now stack is A - A)
 4. Launch B from A re-starts B.
 5. Launch A from B. (a new instance of A is created, in the same task in
 which A's instance was created in step 1. Now stack is A - A - A)

 Executing step 4  5 repeatedly, creates multiple instances of A.

 Q2) Step 3  5, B creates an intent to start A with
 FLAG_ACTIVITY_NEW_TASK. Why new instance of A is created in same task in
 which A was launched from launcher?
 Q3) Shouldn't the behavior be same as explained in previous message i.e.
 A should be brought to foreground?

 Thanks,
 Vibhor

   On Tue, Jun 22, 2010 at 10:41 AM, Dianne Hackborn 
 hack...@android.com wrote:

  First, you almost certainly don't want to use singleInstance.  It is
 for very special situations, and has significant repercussions on UI flow
 that you need to understand before touching it.

 The key point about this is this statement in Launch modes
 http://developer.android.com/guide/topics/fundamentals.html#lmodes

  
 http://developer.android.com/guide/topics/fundamentals.html#lmodes*Whether
 the instance can have other activities in its task*. A singleInstance
 activity stands alone as the only activity in its task. If it starts 
 another
 activity, that activity will be launched into a different task regardless 
 of
 its launch mode — as if FLAG_ACTIVITY_NEW_TASK was in the 

Re: [android-developers] Re: help on singleinstance launchmode

2010-06-22 Thread Vibhor Mahajan
Hello,

Thanks Dianne for reply. I understood your point. But after doing some more
tests I have confusions. Kindly provide some suggestions.

Activity A has SINGLEINSTANCE and B  C has STANDARD launch mode.
Execute below steps:
1. Start A from launcher
2. Launch B from A. (oncreate of B is called)
3. Launch A from B. (re-starts A because A has SINGLEINSTANCE launchmode)
4. Launch C from A. (oncreate of C is called)
5. Launch A from C. (re-starts A because A has SINGLEINSTANCE launchmode)
6. Launch B from A again.

From step 6 above, instance of B is NOT CREATED instead task containing
activity B  C comes in foreground, with last state of C (from step4)
displayed. (because C was on top of this task).

Similar behavior is documented in
http://developer.android.com/guide/topics/fundamentals.html link. If it
does, it is not in position to handle the intent, and the intent is dropped.
(Even though the intent is dropped, its arrival would have caused the task
to come to the foreground, where it would remain.)

Q1) Why new instance of B is not created even though B has standard launch
mode and also not top of destination task?

Now if I change the implementation as below:
Activity A has STANDARD and B has SINGLEINSTANCE launch mode.
Repeat same steps again:
1. Start A from launcher
2. Launch B from A. (oncreate of B is called)
3. Launch A from B. (a new instance of A is created, in the same task in
which A's instance was created in step 1. Now stack is A - A)
4. Launch B from A re-starts B.
5. Launch A from B. (a new instance of A is created, in the same task in
which A's instance was created in step 1. Now stack is A - A - A)

Executing step 4  5 repeatedly, creates multiple instances of A.

Q2) Step 3  5, B creates an intent to start A with FLAG_ACTIVITY_NEW_TASK.
Why new instance of A is created in same task in which A was launched from
launcher?
Q3) Shouldn't the behavior be same as explained in previous message i.e. A
should be brought to foreground?

Thanks,
Vibhor

On Tue, Jun 22, 2010 at 10:41 AM, Dianne Hackborn hack...@android.comwrote:

 First, you almost certainly don't want to use singleInstance.  It is for
 very special situations, and has significant repercussions on UI flow that
 you need to understand before touching it.

 The key point about this is this statement in Launch modes
 http://developer.android.com/guide/topics/fundamentals.html#lmodes

 http://developer.android.com/guide/topics/fundamentals.html#lmodes*Whether
 the instance can have other activities in its task*. A singleInstance
 activity stands alone as the only activity in its task. If it starts another
 activity, that activity will be launched into a different task regardless of
 its launch mode — as if FLAG_ACTIVITY_NEW_TASK was in the intent. In all
 other respects, the singleInstance mode is identical to singleTask.

 This means that when you launch B, it is the root of its own new task.
  When you launch B again, the task for it already exists, then the current
 task will be brought to the foreground instead of starting a new instance.
  You have effectively turned yourself into a launcher, so get the behavior
 expected for a launcher.

 On Mon, Jun 21, 2010 at 9:45 PM, Vibhor Mahajan 
 mahajan.vib...@gmail.comwrote:

 Hello,

 As per the documentation, standard and singletop differ in just one way,
 standard activity instance is created every time but singletop instance may
 or may not be created. I verified this, if in the above code, reverse
 launchmode of activity A  B i.e. Now A has STANDARD and B as
 SINGLEINSTANCE.

 Repeat same steps again:
 1. Click button in Activity A starts B. (oncreate of B is called)
 2. Click button in Activity B creates a new instance A. (oncreate of A is
 called, because A now has STANDARD launchmode)
 3. Click button in Activity A re-starts B. (oncreate of B is NOT CALLED,
 because B now has SINGLEINSTANCE launchmode)

 This is exactly as per the documentation.

 Kindly help in understanding why in original source code, multiple
 instances of B is not created, though B is having STANDARD launch mode?

 Thanks,
 Vibhor


 On Mon, Jun 21, 2010 at 8:15 PM, MobDev developm...@mobilaria.comwrote:

 Btw, got this from documentation, concentrate on the last sentence :
 Every time there's new intent for a standard activity, a new
 instance of the class is created to respond to that intent. Each
 instance handles a single intent. Similarly, a new instance of a
 singleTop activity may also be created to handle a new intent.
 However, if the target task already has an existing instance of the
 activity at the top of its stack, that instance will receive the new
 intent (in an onNewIntent()  call); a new instance is not created.
 found here :

 http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

 On 21 jun, 13:30, Vibhor Mahajan mahajan.vib...@gmail.com wrote:
  Hello,
 
  What is launch mode of an activity, which is launched from an activity
  with launch mode as 

Re: [android-developers] Re: help on singleinstance launchmode

2010-06-22 Thread Dianne Hackborn
Yes that is working as intended, you have B and C together in their own
task, and A can't be in it because it is single instance.

Again, just ignore single instance unless you have a clear reason for using
it, and then you will want to structure the rest of your interaction to work
well with it.

At this point I would suggest focusing questions on what you are actually
trying to accomplish.

On Tue, Jun 22, 2010 at 1:31 AM, Vibhor Mahajan mahajan.vib...@gmail.comwrote:

 Hello,

 Thanks Dianne for reply. I understood your point. But after doing some more
 tests I have confusions. Kindly provide some suggestions.

 Activity A has SINGLEINSTANCE and B  C has STANDARD launch mode.
 Execute below steps:
 1. Start A from launcher
 2. Launch B from A. (oncreate of B is called)
 3. Launch A from B. (re-starts A because A has SINGLEINSTANCE launchmode)
 4. Launch C from A. (oncreate of C is called)
 5. Launch A from C. (re-starts A because A has SINGLEINSTANCE launchmode)
 6. Launch B from A again.

 From step 6 above, instance of B is NOT CREATED instead task containing
 activity B  C comes in foreground, with last state of C (from step4)
 displayed. (because C was on top of this task).

 Similar behavior is documented in
 http://developer.android.com/guide/topics/fundamentals.html link. If it
 does, it is not in position to handle the intent, and the intent is dropped.
 (Even though the intent is dropped, its arrival would have caused the task
 to come to the foreground, where it would remain.)

 Q1) Why new instance of B is not created even though B has standard launch
 mode and also not top of destination task?

 Now if I change the implementation as below:
 Activity A has STANDARD and B has SINGLEINSTANCE launch mode.
 Repeat same steps again:
 1. Start A from launcher
 2. Launch B from A. (oncreate of B is called)
 3. Launch A from B. (a new instance of A is created, in the same task in
 which A's instance was created in step 1. Now stack is A - A)
 4. Launch B from A re-starts B.
 5. Launch A from B. (a new instance of A is created, in the same task in
 which A's instance was created in step 1. Now stack is A - A - A)

 Executing step 4  5 repeatedly, creates multiple instances of A.

 Q2) Step 3  5, B creates an intent to start A with FLAG_ACTIVITY_NEW_TASK.
 Why new instance of A is created in same task in which A was launched from
 launcher?
 Q3) Shouldn't the behavior be same as explained in previous message i.e. A
 should be brought to foreground?

 Thanks,
 Vibhor

 On Tue, Jun 22, 2010 at 10:41 AM, Dianne Hackborn hack...@android.comwrote:

 First, you almost certainly don't want to use singleInstance.  It is for
 very special situations, and has significant repercussions on UI flow that
 you need to understand before touching it.

 The key point about this is this statement in Launch modes
 http://developer.android.com/guide/topics/fundamentals.html#lmodes

 http://developer.android.com/guide/topics/fundamentals.html#lmodes*Whether
 the instance can have other activities in its task*. A singleInstance
 activity stands alone as the only activity in its task. If it starts another
 activity, that activity will be launched into a different task regardless of
 its launch mode — as if FLAG_ACTIVITY_NEW_TASK was in the intent. In all
 other respects, the singleInstance mode is identical to singleTask.

 This means that when you launch B, it is the root of its own new task.
  When you launch B again, the task for it already exists, then the current
 task will be brought to the foreground instead of starting a new instance.
  You have effectively turned yourself into a launcher, so get the behavior
 expected for a launcher.

 On Mon, Jun 21, 2010 at 9:45 PM, Vibhor Mahajan mahajan.vib...@gmail.com
  wrote:

 Hello,

 As per the documentation, standard and singletop differ in just one way,
 standard activity instance is created every time but singletop instance may
 or may not be created. I verified this, if in the above code, reverse
 launchmode of activity A  B i.e. Now A has STANDARD and B as
 SINGLEINSTANCE.

 Repeat same steps again:
 1. Click button in Activity A starts B. (oncreate of B is called)
 2. Click button in Activity B creates a new instance A. (oncreate of A is
 called, because A now has STANDARD launchmode)
 3. Click button in Activity A re-starts B. (oncreate of B is NOT CALLED,
 because B now has SINGLEINSTANCE launchmode)

 This is exactly as per the documentation.

 Kindly help in understanding why in original source code, multiple
 instances of B is not created, though B is having STANDARD launch mode?

 Thanks,
 Vibhor


 On Mon, Jun 21, 2010 at 8:15 PM, MobDev developm...@mobilaria.comwrote:

 Btw, got this from documentation, concentrate on the last sentence :
 Every time there's new intent for a standard activity, a new
 instance of the class is created to respond to that intent. Each
 instance handles a single intent. Similarly, a new instance of a
 singleTop activity may also be 

Re: [android-developers] Re: help on singleinstance launchmode

2010-06-22 Thread Vibhor Mahajan
Hello,

Simply saying, I am trying to understand the behavior of singleinstance in
detail. I found 2 different behaviors when a activity with singleinstance
launchmode, launches an another activity.

Based on your reply, I understood SINGLEINSTANCE activity is launching an
activity in new task and because destination activity is already on top of
desired task, task is brought to foreground and new instance is not created.
I accept, it is special and should be used carefully.

But, it is contradicting to results stated in my previous message. Kindly
give suggestions for the questions in my previous message for better
understanding.

Thanks,
Vibhor

On Tue, Jun 22, 2010 at 2:07 PM, Dianne Hackborn hack...@android.comwrote:

 Yes that is working as intended, you have B and C together in their own
 task, and A can't be in it because it is single instance.

 Again, just ignore single instance unless you have a clear reason for using
 it, and then you will want to structure the rest of your interaction to work
 well with it.

 At this point I would suggest focusing questions on what you are actually
 trying to accomplish.


 On Tue, Jun 22, 2010 at 1:31 AM, Vibhor Mahajan 
 mahajan.vib...@gmail.comwrote:

 Hello,

 Thanks Dianne for reply. I understood your point. But after doing some
 more tests I have confusions. Kindly provide some suggestions.

 Activity A has SINGLEINSTANCE and B  C has STANDARD launch mode.
 Execute below steps:
 1. Start A from launcher
 2. Launch B from A. (oncreate of B is called)
 3. Launch A from B. (re-starts A because A has SINGLEINSTANCE launchmode)
 4. Launch C from A. (oncreate of C is called)
 5. Launch A from C. (re-starts A because A has SINGLEINSTANCE launchmode)
 6. Launch B from A again.

 From step 6 above, instance of B is NOT CREATED instead task containing
 activity B  C comes in foreground, with last state of C (from step4)
 displayed. (because C was on top of this task).

 Similar behavior is documented in
 http://developer.android.com/guide/topics/fundamentals.html link. If it
 does, it is not in position to handle the intent, and the intent is dropped.
 (Even though the intent is dropped, its arrival would have caused the task
 to come to the foreground, where it would remain.)

 Q1) Why new instance of B is not created even though B has standard launch
 mode and also not top of destination task?

 Now if I change the implementation as below:
 Activity A has STANDARD and B has SINGLEINSTANCE launch mode.
 Repeat same steps again:
 1. Start A from launcher
 2. Launch B from A. (oncreate of B is called)
 3. Launch A from B. (a new instance of A is created, in the same task in
 which A's instance was created in step 1. Now stack is A - A)
 4. Launch B from A re-starts B.
 5. Launch A from B. (a new instance of A is created, in the same task in
 which A's instance was created in step 1. Now stack is A - A - A)

 Executing step 4  5 repeatedly, creates multiple instances of A.

 Q2) Step 3  5, B creates an intent to start A with
 FLAG_ACTIVITY_NEW_TASK. Why new instance of A is created in same task in
 which A was launched from launcher?
 Q3) Shouldn't the behavior be same as explained in previous message i.e. A
 should be brought to foreground?

 Thanks,
 Vibhor

 On Tue, Jun 22, 2010 at 10:41 AM, Dianne Hackborn hack...@android.comwrote:

 First, you almost certainly don't want to use singleInstance.  It is for
 very special situations, and has significant repercussions on UI flow that
 you need to understand before touching it.

 The key point about this is this statement in Launch modes
 http://developer.android.com/guide/topics/fundamentals.html#lmodes

 http://developer.android.com/guide/topics/fundamentals.html#lmodes*Whether
 the instance can have other activities in its task*. A singleInstance
 activity stands alone as the only activity in its task. If it starts another
 activity, that activity will be launched into a different task regardless of
 its launch mode — as if FLAG_ACTIVITY_NEW_TASK was in the intent. In all
 other respects, the singleInstance mode is identical to singleTask.

 This means that when you launch B, it is the root of its own new task.
  When you launch B again, the task for it already exists, then the current
 task will be brought to the foreground instead of starting a new instance.
  You have effectively turned yourself into a launcher, so get the behavior
 expected for a launcher.

 On Mon, Jun 21, 2010 at 9:45 PM, Vibhor Mahajan 
 mahajan.vib...@gmail.com wrote:

 Hello,

 As per the documentation, standard and singletop differ in just one way,
 standard activity instance is created every time but singletop instance may
 or may not be created. I verified this, if in the above code, reverse
 launchmode of activity A  B i.e. Now A has STANDARD and B as
 SINGLEINSTANCE.

 Repeat same steps again:
 1. Click button in Activity A starts B. (oncreate of B is called)
 2. Click button in Activity B creates a new instance A. (oncreate of A
 is 

[android-developers] Re: help on singleinstance launchmode

2010-06-21 Thread MobDev
Actually,
to me it sounds it's behaving correctly...
If Activity B is standard then it might be re-used, so it's not
obliged to create a new Instance...
Thats what happens in ur case, first time it get's created, then you
go to activity A, then when you ask for Activity B the old activity
B is returned...
If you don't want that as a behaviour you might declare B as
singleInstance or even better singleTask...

On 21 jun, 13:30, Vibhor Mahajan mahajan.vib...@gmail.com wrote:
 Hello,

 What is launch mode of an activity, which is launched from an activity
 with launch mode as singleinstance. I tried the following code.

 My application has two activities i.e. A  B. Activity A has
 singleinstance launchmode set and activity B has standard launch
 mode set. Android manifest file is as follows:

 application android:icon=@drawable/icon android:label=@string/
 app_name 
         activity android:name=.activity_lifecycle
                   android:label=@string/app_name
                   android:launchMode=singleInstance
             intent-filter action
 android:name=android.intent.action.MAIN /
                 category
 android:name=android.intent.category.LAUNCHER /
             /intent-filter
         /activity
         activity android:name=.another
 android:launchMode=standard /activity
     /application

 Activity A has a button, clicking button starts Activity B using below
 code:
 public void onClick(View v) {
         // TODO Auto-generated method stub
         Intent intent = new
 Intent(activity_lifecycle.this,another.class);
         startActivityForResult(intent, 0);

 }

 Activity B has a button, clicking button starts Activity A using below
 code:
 public void onClick(View v) {
         // TODO Auto-generated method stub
         Intent intent = new
 Intent(another.this,activity_lifecycle.class);
         startActivityForResult(intent, 0);

 }

 Click button in Activity A starts B. (oncreate of B is called)
 Click button in Activity B re-starts A. (because A has SINGLEINSTANCE
 launchmode)
 Click button in Activity A re-starts B. (oncreate of B is NOT CALLED)

 After 3rd step, since activity B is standard, a new instance should be
 created and not previous instance to be used.

 Kindly suggest why when second time activity B is started, a new
 instance of activity B is not created, when it is declared with
 launchmode standard.

 Regards,
 Vibhor

-- 
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


[android-developers] Re: help on singleinstance launchmode

2010-06-21 Thread MobDev
Btw, got this from documentation, concentrate on the last sentence :
Every time there's new intent for a standard activity, a new
instance of the class is created to respond to that intent. Each
instance handles a single intent. Similarly, a new instance of a
singleTop activity may also be created to handle a new intent.
However, if the target task already has an existing instance of the
activity at the top of its stack, that instance will receive the new
intent (in an onNewIntent()  call); a new instance is not created.
found here :
http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

On 21 jun, 13:30, Vibhor Mahajan mahajan.vib...@gmail.com wrote:
 Hello,

 What is launch mode of an activity, which is launched from an activity
 with launch mode as singleinstance. I tried the following code.

 My application has two activities i.e. A  B. Activity A has
 singleinstance launchmode set and activity B has standard launch
 mode set. Android manifest file is as follows:

 application android:icon=@drawable/icon android:label=@string/
 app_name 
         activity android:name=.activity_lifecycle
                   android:label=@string/app_name
                   android:launchMode=singleInstance
             intent-filter action
 android:name=android.intent.action.MAIN /
                 category
 android:name=android.intent.category.LAUNCHER /
             /intent-filter
         /activity
         activity android:name=.another
 android:launchMode=standard /activity
     /application

 Activity A has a button, clicking button starts Activity B using below
 code:
 public void onClick(View v) {
         // TODO Auto-generated method stub
         Intent intent = new
 Intent(activity_lifecycle.this,another.class);
         startActivityForResult(intent, 0);

 }

 Activity B has a button, clicking button starts Activity A using below
 code:
 public void onClick(View v) {
         // TODO Auto-generated method stub
         Intent intent = new
 Intent(another.this,activity_lifecycle.class);
         startActivityForResult(intent, 0);

 }

 Click button in Activity A starts B. (oncreate of B is called)
 Click button in Activity B re-starts A. (because A has SINGLEINSTANCE
 launchmode)
 Click button in Activity A re-starts B. (oncreate of B is NOT CALLED)

 After 3rd step, since activity B is standard, a new instance should be
 created and not previous instance to be used.

 Kindly suggest why when second time activity B is started, a new
 instance of activity B is not created, when it is declared with
 launchmode standard.

 Regards,
 Vibhor

-- 
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


Re: [android-developers] Re: help on singleinstance launchmode

2010-06-21 Thread Vibhor Mahajan
Hello,

As per the documentation, standard and singletop differ in just one way,
standard activity instance is created every time but singletop instance may
or may not be created. I verified this, if in the above code, reverse
launchmode of activity A  B i.e. Now A has STANDARD and B as
SINGLEINSTANCE.

Repeat same steps again:
1. Click button in Activity A starts B. (oncreate of B is called)
2. Click button in Activity B creates a new instance A. (oncreate of A is
called, because A now has STANDARD launchmode)
3. Click button in Activity A re-starts B. (oncreate of B is NOT CALLED,
because B now has SINGLEINSTANCE launchmode)

This is exactly as per the documentation.

Kindly help in understanding why in original source code, multiple instances
of B is not created, though B is having STANDARD launch mode?

Thanks,
Vibhor

On Mon, Jun 21, 2010 at 8:15 PM, MobDev developm...@mobilaria.com wrote:

 Btw, got this from documentation, concentrate on the last sentence :
 Every time there's new intent for a standard activity, a new
 instance of the class is created to respond to that intent. Each
 instance handles a single intent. Similarly, a new instance of a
 singleTop activity may also be created to handle a new intent.
 However, if the target task already has an existing instance of the
 activity at the top of its stack, that instance will receive the new
 intent (in an onNewIntent()  call); a new instance is not created.
 found here :

 http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

 On 21 jun, 13:30, Vibhor Mahajan mahajan.vib...@gmail.com wrote:
  Hello,
 
  What is launch mode of an activity, which is launched from an activity
  with launch mode as singleinstance. I tried the following code.
 
  My application has two activities i.e. A  B. Activity A has
  singleinstance launchmode set and activity B has standard launch
  mode set. Android manifest file is as follows:
 
  application android:icon=@drawable/icon android:label=@string/
  app_name 
  activity android:name=.activity_lifecycle
android:label=@string/app_name
android:launchMode=singleInstance
  intent-filter action
  android:name=android.intent.action.MAIN /
  category
  android:name=android.intent.category.LAUNCHER /
  /intent-filter
  /activity
  activity android:name=.another
  android:launchMode=standard /activity
  /application
 
  Activity A has a button, clicking button starts Activity B using below
  code:
  public void onClick(View v) {
  // TODO Auto-generated method stub
  Intent intent = new
  Intent(activity_lifecycle.this,another.class);
  startActivityForResult(intent, 0);
 
  }
 
  Activity B has a button, clicking button starts Activity A using below
  code:
  public void onClick(View v) {
  // TODO Auto-generated method stub
  Intent intent = new
  Intent(another.this,activity_lifecycle.class);
  startActivityForResult(intent, 0);
 
  }
 
  Click button in Activity A starts B. (oncreate of B is called)
  Click button in Activity B re-starts A. (because A has SINGLEINSTANCE
  launchmode)
  Click button in Activity A re-starts B. (oncreate of B is NOT CALLED)
 
  After 3rd step, since activity B is standard, a new instance should be
  created and not previous instance to be used.
 
  Kindly suggest why when second time activity B is started, a new
  instance of activity B is not created, when it is declared with
  launchmode standard.
 
  Regards,
  Vibhor

 --
 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.comandroid-developers%2bunsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/android-developers?hl=en


-- 
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

Re: [android-developers] Re: help on singleinstance launchmode

2010-06-21 Thread Dianne Hackborn
First, you almost certainly don't want to use singleInstance.  It is for
very special situations, and has significant repercussions on UI flow that
you need to understand before touching it.

The key point about this is this statement in Launch modes
http://developer.android.com/guide/topics/fundamentals.html#lmodes

http://developer.android.com/guide/topics/fundamentals.html#lmodes*Whether
the instance can have other activities in its task*. A singleInstance
activity stands alone as the only activity in its task. If it starts another
activity, that activity will be launched into a different task regardless of
its launch mode — as if FLAG_ACTIVITY_NEW_TASK was in the intent. In all
other respects, the singleInstance mode is identical to singleTask.

This means that when you launch B, it is the root of its own new task.  When
you launch B again, the task for it already exists, then the current task
will be brought to the foreground instead of starting a new instance.  You
have effectively turned yourself into a launcher, so get the behavior
expected for a launcher.

On Mon, Jun 21, 2010 at 9:45 PM, Vibhor Mahajan mahajan.vib...@gmail.comwrote:

 Hello,

 As per the documentation, standard and singletop differ in just one way,
 standard activity instance is created every time but singletop instance may
 or may not be created. I verified this, if in the above code, reverse
 launchmode of activity A  B i.e. Now A has STANDARD and B as
 SINGLEINSTANCE.

 Repeat same steps again:
 1. Click button in Activity A starts B. (oncreate of B is called)
 2. Click button in Activity B creates a new instance A. (oncreate of A is
 called, because A now has STANDARD launchmode)
 3. Click button in Activity A re-starts B. (oncreate of B is NOT CALLED,
 because B now has SINGLEINSTANCE launchmode)

 This is exactly as per the documentation.

 Kindly help in understanding why in original source code, multiple
 instances of B is not created, though B is having STANDARD launch mode?

 Thanks,
 Vibhor


 On Mon, Jun 21, 2010 at 8:15 PM, MobDev developm...@mobilaria.com wrote:

 Btw, got this from documentation, concentrate on the last sentence :
 Every time there's new intent for a standard activity, a new
 instance of the class is created to respond to that intent. Each
 instance handles a single intent. Similarly, a new instance of a
 singleTop activity may also be created to handle a new intent.
 However, if the target task already has an existing instance of the
 activity at the top of its stack, that instance will receive the new
 intent (in an onNewIntent()  call); a new instance is not created.
 found here :

 http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

 On 21 jun, 13:30, Vibhor Mahajan mahajan.vib...@gmail.com wrote:
  Hello,
 
  What is launch mode of an activity, which is launched from an activity
  with launch mode as singleinstance. I tried the following code.
 
  My application has two activities i.e. A  B. Activity A has
  singleinstance launchmode set and activity B has standard launch
  mode set. Android manifest file is as follows:
 
  application android:icon=@drawable/icon android:label=@string/
  app_name 
  activity android:name=.activity_lifecycle
android:label=@string/app_name
android:launchMode=singleInstance
  intent-filter action
  android:name=android.intent.action.MAIN /
  category
  android:name=android.intent.category.LAUNCHER /
  /intent-filter
  /activity
  activity android:name=.another
  android:launchMode=standard /activity
  /application
 
  Activity A has a button, clicking button starts Activity B using below
  code:
  public void onClick(View v) {
  // TODO Auto-generated method stub
  Intent intent = new
  Intent(activity_lifecycle.this,another.class);
  startActivityForResult(intent, 0);
 
  }
 
  Activity B has a button, clicking button starts Activity A using below
  code:
  public void onClick(View v) {
  // TODO Auto-generated method stub
  Intent intent = new
  Intent(another.this,activity_lifecycle.class);
  startActivityForResult(intent, 0);
 
  }
 
  Click button in Activity A starts B. (oncreate of B is called)
  Click button in Activity B re-starts A. (because A has SINGLEINSTANCE
  launchmode)
  Click button in Activity A re-starts B. (oncreate of B is NOT CALLED)
 
  After 3rd step, since activity B is standard, a new instance should be
  created and not previous instance to be used.
 
  Kindly suggest why when second time activity B is started, a new
  instance of activity B is not created, when it is declared with
  launchmode standard.
 
  Regards,
  Vibhor

 --
 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