Can I get clarification here? Does your application call finish() at
some point? If so, at what point?

The Android design guidelines strongly discourage the use of an "exit"
button. You should see that most apps don't have one. The way to
"exit" an application is to switch to another one (including a phone
call) or go to the Launcher/Home. Whenever you switch, the onPause()
method for the foreground Activity of your app should be called.
Whenever you switch back, the onResume() method should be called.

I acknowledge that sometimes you may want to start a child *Activity*
and then kill it when you're done with it. To do this, use
finishActivity() with a result code. You may also want to start a
service when your app starts, but give the user the option to stop the
service if it's not being used. That's OK too, but you shouldn't shut
down the app itself.

In short, the Android model is that you leave the application paused,
and let Android destroy it to free up resources. If Android does this,
it should always call the onPause() method of any Activities that are
still running.

Can you describe your test harness in more detail? To unit test an
Activity, you shouldn't need anything more than
InstrumentationTestRunner and ActivityInstrumentationTestCase2. This
is documented under "Testing and Instrumentation" in the Android 2.2
Developer's Guide.

On Nov 29, 1:33 am, Ian <[email protected]> wrote:
> OK. Just run up the same app, press exit button and I get a call to
> onStop(), then onDestroy(). That, I assume is what happens on the
> finish() method. Notice no call to onPause() :-\
>
> So, it looks like the test harness has a different behaviour.
>
> A temporary, poor solution has been to create an interval variable
> which gets set on state transitions (onPause(), onCreate() etc.), and
> then query that variable in my test harness. Then I use
> 'assertTrue(state != RUNNING)'.
>
> Not good, but I can move on for now.
>
> Any better solutions, or insights appreciated.
>
> Thanks
> Ian Hunter
>
> On Nov 29, 8:20 am, Ian <[email protected]> wrote:
>
>
>
>
>
>
>
> > Thanks for the response.
>
> > In my test harness, I do 'button.performClick()', which itself calls
> > activity.finish().
>
> > According to docs...
>
> > "If an activity is paused or stopped, the system can drop it from
> > memory either by asking it to finish (calling its finish() method), or
> > simply killing its process."
>
> > So I would expect onDestroy().
>
> > I'm going to trace through (without the test harness) and see what
> > actually happens.
>
> > There still remains the question - how do I know onPause() was called?
> > Ideally I need a callback, or a way of querying the activity for its
> > state.
>
> > Any help appreciated
>
> > Ian Hunter
>
> > On Nov 28, 9:41 pm, Frank Weiss <[email protected]> wrote:
>
> > > Chances are what you mean by "activity exits" is not in line with the
> > > Android activity lifecycle. Why do you think that the onPause() callback 
> > > is
> > > not sufficient in this case?

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

Reply via email to