I may just be misinterpreting what I'm seeing through DDMS actually. When I run my app, I have three activities, A, B, C. In the DDMS app list, I see my app listed like:
.... com.test.myapp .... if I select it, and hit the Stop button, it will be killed, but then replaced by a new instance of the application. Different results depending on which activity I'm looking at. If I Stop when Activity A is showing, A just keeps being restarted. If I kill when B is showing, A is shown again. If I kill when C is running, B shows itself. So I'm guessing this is just the OS trying to restart from the last- paused activity - and if on Activity A, there is no previous activity, so it just gets restarted itself. Is this correct? Sorry for the confusion, Thanks On Dec 2, 10:27 am, Mark Wyszomierski <mar...@gmail.com> wrote: > I don't know if it's monkey or not - it looks like it's just this > install (I'm sure it's the most recent SDK) - I can reproduce this odd > behavior on there. On my other machine, and my test phone, looks like > the default behavior is correct (with the same test apps and same SDK > updates). Thanks for your help. > > On Dec 1, 8:38 pm, Dianne Hackborn <hack...@android.com> wrote: > > > Monkey may be doing odd things. Tasks are matched by intent, so if you > > build different intents you will be launching different tasks. > > > On Tue, Dec 1, 2009 at 5:33 PM, Mark Wyszomierski <mar...@gmail.com> wrote: > > > Ok so the sample app code above should be producing the default > > > behavior though, right? This is happening on a mac running 1.5. I did > > > a fresh install of the SDK and the test app on a windows machine here, > > > and it works as you described on that machine (always resumes instance > > > if running in background instead of creating new instances). > > > > I'll also see multiple instances when running the monkey test app (on > > > the problematic machine). In the DDMS process list, there will be one > > > listing for the test app. I select it, hit the stop button. The list > > > then shows another instance in its place (has a diff online value > > > etc). It seems like the monkey test app has launched dozens of > > > instances of the test app. > > > > On the windows machine, this does not happen, there is only one > > > instance of my app after the monkey test app runs. When I select it, > > > and hit stop - it's cleared from the list, and that's the only > > > instance. > > > > I'm not sure what's going on, but if the sample app above is correct > > > and functions in the default manner you described, I'll go with that > > > and then do some further testing on some devices, > > > > Thanks > > > > On Dec 1, 7:37 pm, Dianne Hackborn <hack...@android.com> wrote: > > > > I don't know what you are doing. If you try one of the sample apps like > > > > ApiDemos you will see this works fine. > > > > > On Tue, Dec 1, 2009 at 4:18 PM, Mark Wyszomierski <mar...@gmail.com> > > > wrote: > > > > > Hi Dianne, > > > > > > The default behavior is what I'm going for - but I'm just not seeing > > > > > that - I made this small test app - it just has two activities. I > > > > > start the app from the app tray. Then have the first activity launch > > > > > the second activity. I hit the home button to put the app in the > > > > > background. When I hit the app icon from the app tray again, instead > > > > > of seeing the app resume from its paused state (the 2nd activity > > > > > should be showing?), the first activity is shown again: > > > > > > package com.test.teststates; > > > > > > import android.app.Activity; > > > > > import android.content.Intent; > > > > > import android.os.Bundle; > > > > > import android.view.View; > > > > > import android.view.View.OnClickListener; > > > > > import android.widget.Button; > > > > > > public class ActivityMain extends Activity { > > > > > �...@override > > > > > public void onCreate(Bundle savedInstanceState) { > > > > > super.onCreate(savedInstanceState); > > > > > setContentView(R.layout.main); > > > > > > Button btn = (Button)findViewById > > > > > (R.id.activity_main_btnLaunchActivity); > > > > > btn.setOnClickListener(new OnClickListener() { > > > > > public void onClick(View v) { > > > > > // launch the second activity from button click. > > > > > Intent intent = new Intent(); > > > > > intent.setClass(ActivityMain.this, > > > > > ActivityChild.class); > > > > > startActivity(intent); > > > > > } > > > > > }); > > > > > } > > > > > } > > > > > > package com.test.teststates; > > > > > > import android.app.Activity; > > > > > import android.os.Bundle; > > > > > > public class ActivityChild extends Activity { > > > > > �...@override > > > > > public void onCreate(Bundle savedInstanceState) { > > > > > super.onCreate(savedInstanceState); > > > > > setContentView(R.layout.activity_child); > > > > > } > > > > > } > > > > > > <application android:icon="@drawable/icon" android:label="@string/ > > > > > app_name"> > > > > > > <activity android:name=".ActivityMain" > > > > > android:label="@string/app_name"> > > > > > <intent-filter> > > > > > <action android:name="android.intent.action.MAIN" /> > > > > > <category android:name="android.intent.category.LAUNCHER" / > > > > > > </intent-filter> > > > > > </activity> > > > > > > <activity android:name=".ActivityChild" > > > > > android:label="@string/app_name"> > > > > > <intent-filter> > > > > > <action android:name="android.intent.action.VIEW" /> > > > > > <category android:name="android.intent.category.DEFAULT" / > > > > > > </intent-filter> > > > > > </activity> > > > > > > </application> > > > > > > <uses-sdk android:minSdkVersion="3" /> > > > > > > On Dec 1, 5:09 pm, Dianne Hackborn <hack...@android.com> wrote: > > > > > > On Tue, Dec 1, 2009 at 1:46 PM, Mark Wyszomierski <mar...@gmail.com> > > > > > wrote: > > > > > > > I guess I'm not understanding the default process creation method. > > > > > > > Fwiw, what we are talking about has absolutely nothing to do with > > > > > processes. > > > > > > Please make sure you read this starting at "Activities and Tasks": > > > > >http://dirkbd:9092/guide/topics/fundamentals.html > > > > > > > Note that the interaction it describes as the normal behavior for > > > tasks > > > > > is > > > > > > what you seem to be asking for. > > > > > > > Using a new project, with two activities, A and B (both have no > > > custom > > > > > > > > flags set in the manifest, and Activity A is set as MAIN and > > > > > > > LAUNCHER): > > > > > > > > 1) Launch the app from the app drawer > > > > > > > 2) Have activity A start activity B. > > > > > > > 3) Hit the home button. > > > > > > > 4) Go to the app drawer again, try launching the app again. > > > > > > > 5) Looks like a brand new process instance of the app is created, > > > > > > > instead of returning to the original process instance that's > > > already > > > > > > > in the background. As a user, I'd (personally) rather just return > > > to > > > > > > > the instance already running in the background, rather than create > > > a > > > > > > > new instance. > > > > > > > The normal behavior, if you don't do anything, is that in step 4 you > > > will > > > > > > bring the current stack of the task from step 1 brought to the > > > > > foreground, > > > > > > in its current state. This is why most of the built-in apps behave > > > this > > > > > > way. If they do something different, they are doing something > > > special. > > > > > For > > > > > > example the settings app sets a flag on its root activity to always > > > have > > > > > the > > > > > > task clear when it is launched. But that is not the normal > > > > > > behavior. > > > > > > > So the question is: what are you doing that is different? All you > > > have > > > > > > mentioned so far is usingsingleTask, which if used in certain in > > > > > > appropriate ways can cause this kind of thing (and other strange > > > > > behavior). > > > > > > So my first suggestion is to not use this. > > > > > > > Given that I have no other information about what you are doing, I > > > have > > > > > no > > > > > > other suggestions than to use the debugging tools I pointed out to > > > try to > > > > > > see what your app is doing. > > > > > > > > For my application, it doesn't make sense to open multiple > > > instances > > > > > > > of the application. Like the Browser application, there should > > > really > > > > > > > only be one instance, and anytime the user hits the Browser app > > > icon, > > > > > > > they should just return to any running instance they have on the > > > > > > > system, rather than create a new one. > > > > > > > Is your app being launched from other applications like the browser > > > is? > > > > > If > > > > > > not, you are not like the browser, so please don't model your app > > > after > > > > > it. > > > > > > The browser does a lot of special things because of things that are > > > very > > > > > > special about it. It is a really bad model. (And in fact this > > > behavior > > > > > > causes some strange interactions, and a lot of complicated code in > > > the > > > > > > browser to try to make it behave as the user expects, so in the > > > future I > > > > > > would really like to get rid of this aspect of it.) > > > > > > > -- > > > > > > Dianne Hackborn > > > > > > Android framework engineer > > > > > > hack...@android.com > > > > > > > Note: please don't send private questions to me, as I don't have > > > > > > time > > > to > > > > > > provide private support, and so won't reply to such e-mails. All > > > such > > > > > > questions should be posted on public forums, where I and others can > > > see > > > > > and > > > > > > answer them. > > > > > > On Dec 1, 5:09 pm, Dianne Hackborn <hack...@android.com> wrote: > > > > > > On Tue, Dec 1, 2009 at 1:46 PM, Mark Wyszomierski <mar...@gmail.com> > > > > > wrote: > > > > > > > I guess I'm not understanding the default process creation method. > > > > > > > Fwiw, what we are talking about has absolutely nothing to do with > > > > > processes. > > > > > > Please make sure you read this starting at "Activities and Tasks": > > > > >http://dirkbd:9092/guide/topics/fundamentals.html > > > > > > > Note that the interaction it describes as the normal behavior for > > > tasks > > > > > is > > > > > > what you seem to be asking for. > > > > > > > Using a new project, with two activities, A and B (both have no > > > custom > > > > > > > > flags set in the manifest, and Activity A is set as MAIN and > > > > > > > LAUNCHER): > > > > > > > > 1) Launch the app from the app drawer > > ... > > read more » -- 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