Yes, onPause().

On Tue, Aug 11, 2009 at 9:45 PM, eags <[email protected]> wrote:

>
> I guess a related question is, how do I guarantee that my app finishes
> whenever it is not in the foreground?  onPause() I guess.
>
> On Aug 11, 2:44 pm, Dianne Hackborn <[email protected]> wrote:
> > I would guess there is something else going on.  If you only press home,
> > then that function should never be called.  You could put a breakpoint in
> it
> > to verify.
> >
> >
> >
> >
> >
> > On Tue, Aug 11, 2009 at 11:54 AM, eags <[email protected]> wrote:
> >
> > > Thanks Dianne.   I am still confused as to why consuming all events in
> > > onKeyDown breaks the normal behavior when relaunching the app?  If I
> > > leave onKeyDown alone, pressing HOME takes me to the home screen and
> > > relaunching takes me directly back to where I left off in the task.
> > > However if I always return true from onKeyDown then after pressing
> > > home and then relaunching, the task is restarted from the beginning.
> > > Why is that?
> >
> > > Thanks again.
> >
> > > On Aug 10, 8:20 pm, Dianne Hackborn <[email protected]> wrote:
> > > > The home and end call keys are intercepted by the system before ever
> > > > reaching the application, and there is nothing you can do in the app
> to
> > > > modify their behavior (including overriding onKeyDown).
> >
> > > > All other keys (including back, menu, call, and search) are first
> sent to
> > > > the application and only perform their default action if the
> application
> > > > does not consume them.  By returning true from onKeyDown(), you are
> > > > consuming the events and not allowing their normal behavior to run.
> >
> > > > On Mon, Aug 10, 2009 at 7:15 PM, eags <[email protected]> wrote:
> >
> > > > > This behavior is actually very strange and apparently not quite as
> > > > > simple as the event is not delivered to applications.
> >
> > > > > Indeed if I try and capture the key event, I cannot.  However if I
> > > > > just do this:
> >
> > > > >    public boolean onKeyDown(int keyCode, KeyEvent event)
> > > > >    {
> > > > >         return true;
> > > > >        //return super.onKeyDown(keyCode, event);
> > > > >    }
> >
> > > > > and then press the home key, the Activity does not stay in the task
> > > > > stack and launching again does not get me back to this activity but
> > > > > the whole app is just launched again from the beginning.  So it is
> > > > > like there is something in the default implementation of onKeyDown
> > > > > that makes the correct behavior work and I can't stop it from
> > > > > happening but somehow I can break it but always retuning true from
> > > > > onKeyDown.
> >
> > > > > Can anyone explain this behavior or point me to some documentation
> > > > > that will clear this up?
> >
> > > > > Thanks.
> >
> > > > > On Aug 7, 8:04 pm, Marco Nelissen <[email protected]> wrote:
> > > > > > The home key is not delivered to applications.
> >
> > > > > > On Fri, Aug 7, 2009 at 7:25 PM, eags<[email protected]>
> wrote:
> >
> > > > > > > I have implemented onKeyDown and can successfully intercept
> > > > > > > KEYCODE_BACK and many others to prohibit the default behavior.
>  Is
> > > > > > > this not possible with KEYCODE_HOME?  I have a test activity
> that
> > > will
> > > > > > > only finish() if KEYCODE_A is seen.  Even KEYCODE_BACK does
> > > nothing.
> > > > > > > However KEYCODE_HOME continues to have its effect.
> >
> > > > > > > Anyone have any insight into this?
> >
> > > > > > > Thanks.  The test code is below.  The strange thing to note is
> that
> > > > > > > although the toast in the if/else that should handle the
> > > KEYCODE_HOME
> > > > > > > never fires, if I relaunch the application the state is *not*
> > > restored
> > > > > > > so it is like either the onDestroy is being called (previously
> I
> > > tried
> > > > > > > finish() also) or it is like the application is crashing for
> some
> > > > > > > other reason.
> >
> > > > > > > I'm confused.
> >
> > > > > > > import android.app.Activity;
> > > > > > > import android.os.Bundle;
> > > > > > > import android.view.KeyEvent;
> > > > > > > import android.widget.Toast;
> >
> > > > > > > public class MainMenu extends Activity
> > > > > > > {
> > > > > > >        public void onCreate(Bundle bun)
> > > > > > >        {
> > > > > > >                super.onCreate(bun);
> > > > > > >                setContentView(R.layout.main);
> >
> > > > > > >        }
> > > > > > >    public boolean onKeyDown(int keyCode, KeyEvent event)
> > > > > > >    {
> > > > > > >        //if we get any key, clear the Splash Screen
> > > > > > >        if(keyCode==KeyEvent.KEYCODE_HOME) {
> > > > > > >                Toast.makeText(getApplicationContext(), "HIT!",
> > > > > > > Toast.LENGTH_SHORT).show();
> > > > > > >                onDestroy();
> > > > > > >                return true;
> > > > > > >        } else {
> > > > > > >                Toast.makeText(getApplicationContext(),
> "missed",
> > > > > > > Toast.LENGTH_SHORT).show();
> > > > > > >                return true;
> > > > > > >        }
> > > > > > >        //return super.onKeyDown(keyCode, event);
> > > > > > >    }
> >
> > > > > > > }
> >
> > > > --
> > > > Dianne Hackborn
> > > > Android framework engineer
> > > > [email protected]
> >
> > > > 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.
> >
> > --
> > Dianne Hackborn
> > Android framework engineer
> > [email protected]
> >
> > 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.
> >
>


-- 
Dianne Hackborn
Android framework engineer
[email protected]

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.

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