Re: [android-developers] Re: help on singleinstance launchmode
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
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
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
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
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
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
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
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
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
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