Best way to logout each time the application/task goes to background

by Kim D. » Sat, 17 Jul 2010 02:27:15 GMT

Sponsored Links

I have an application which requires a login at the beginning (this is
the first activity). When the user logs in, I keep his credentials in
the application (I extended android.application to add a field called
'key'). I would like to clear this field from memory (from application
instance) an go back to the login activity.

I see the following possibilities:
- Add a broadcast receiver to catch all possible event (call, click on
menu, click on back, lock the phone ...) which clear the key field and
launch the login activity
- Use clearTaskOnLaunch for all activities except the login activity.
But then until my application takes the focus again the key stays in
the application object. (It seems it doesn't work with the go back
button, maybe I need to use no history also)
- Detect for each activity in all onPause or onStop events when
application will leave the foreground
 to clear the key field and launch the login activity

The best would be to have a kind of OnPause method at application
level but I think it doesn't exist

I would appreciate any help on this problem.

ps: I already posted it once but never saw it on the discussions list.



Best way to logout each time the application/task goes to background

by Streets Of Boston » Sat, 17 Jul 2010 03:40:42 GMT

 You have no control over the application and/or activity life cycle.
This will make is very hard to determine when the user 'exits' the

I would do this:
1. Consider an explicit 'log-out' option for your users.
2. Add a time-out to your login-sessions. Refresh the session (time-
out) when the user interacts with your app/server. But when the user
hasn't interacted with your app/server for a given amount of time, the
user's session will have had a time-out and this then would require
the user to login again.


Sponsored Links

Best way to logout each time the application/task goes to background

by Zsolt Vasvari » Sat, 17 Jul 2010 10:43:21 GMT

 1) This is not the best option, at least not without option 2, as the
user can still leave without having the opportunity to log out, for
example to answer a call.

2) I do this, it's a bit of a pain as I need to check the timeout in
every activity, and I have at least a couple of dozens.  So it's a bit
of a maintanence issue.

I set my timeout to, I think, 10 seconds.  Long enough, so if the user
accidentally presses the home button, they can get back in quickly.


Best way to logout each time the application/task goes to background

by Frank Weiss » Sat, 17 Jul 2010 14:59:44 GMT

 Why do you need to force the user to login again just because their
personal workflow involved starting an activity in a different


Best way to logout each time the application/task goes to background

by Anthoni » Sat, 17 Jul 2010 16:43:03 GMT


I also do this, BUT I do not put it into every single activity. What I
do is create a Handler at application level and a time check object.
The handler fires every say 10 seconds and checks the time object. If
it matches what I need I broadcast an event across my entire
application. Each activity then registers whether or not they need to
be notified of this broadcast, so they can take what ever action they

Hope this helps.


On Jul 17, 3:43am, Zsolt Vasvari <> wrote:


Best way to logout each time the application/task goes to background

by Kim Damevin » Sat, 17 Jul 2010 17:58:04 GMT

 Frank weis: my application requires a high level of security, so if the
user leaves it I don't want that someone else who would use the android
mobile can open it without having to log in.

Thanks for all your replies it helps a lot !
I think i will go for the timeout method. It's a good point that if the user
clicks on home by mistake and wants to come back to the application in a
short time period he doesn't need to log in again.

Anthoni and Zsolt Vasvari can you describe a bit more your solutions please


On Sat, Jul 17, 2010 at 10:42 AM, Anthoni <> wrote:


Best way to logout each time the application/task goes to background

by Zsolt Vasvari » Sun, 18 Jul 2010 18:45:54 GMT


I have a helper method that I call from all activities' onPause()
method. It saves the current time in the application's presistent

public static void setAppLastHiddenTime(Context context)

Preferences.setLong() is my own helper method, but it just writes to

Then from the activities' onResume() method, I call another helper
method that checks if I need to ask for the password:

public static boolean isNeedToAskForPassword(Context context)
boolean shouldAskForPassword = false;
boolean passwordVerified = Preferences.getBoolean(context,

if (passwordVerified)
long appLastHiddenTime = Preferences.getLong(context,
long currentTime = System.currentTimeMillis();

// Check if we timed out
shouldAskForPassword = (currentTime >
(appLastHiddenTime + MAX_HIDDEN_TIME));

if (shouldAskForPassword)
shouldAskForPassword = true;

return shouldAskForPassword;

MAX_HIDDEN_TIME is the time-out, 5000ms seconds in my case.

If isNeedToAskForPassword() returns true, I display my password dialog
and if the user enters the right password, I call my 3rd helper

public static void markPasswordVerified(Context context)
R.string.password_verified_preference_key, true);

On Jul 17, 5:57pm, Kim Damevin <> wrote:
> >

Best way to logout each time the application/task goes to background

by Streets Of Boston » Mon, 19 Jul 2010 02:35:15 GMT

 equiring  users to re-type their passwords every time they leave the
app (even if not by their doing, e.g. when receiving a phone-call or
reacting to a notification), may reaallly start to annoy your users.
And if your app needs a high level of security, i can imagine that the
users' passwords are pretty strong.

But i don't know the nature of your app and it could be that your
users are willing to put up with it.

About the timeout of my first reply:
I was talking about a session timeout on the server, not on your app.
You send an authentication token, e.g. a (secure) cookie, with every
request to your server. The server then determines if the request's
session has timed-out or not. If so, the user needs to login again.

On Jul 17, 5:57am, Kim Damevin <> wrote:
> >

Best way to logout each time the application/task goes to background

by Zsolt Vasvari » Mon, 19 Jul 2010 14:42:59 GMT

 on't have a server and this is what my users asked for.  They don't
want prying eyes for their financial data. The password is optional
and a yet to receive a bad comment about this feature.

On Jul 19, 2:34am, Streets Of Boston <> wrote:
> > >

Other Threads

1. how to play a 8192*8192 image ?

I want to play a   8192*8192 image,but the system exists a "overflow of
memory" exception,what should i do ? Thank you!


2. Avoiding GPL

I need to use some open source code with GPL3.

As usual I don't want to open source code for full application.

Now what I understand is if I make two separate process one with my
main application code and other as a service or something with Open
source library  then in that case I have to open source code only for
the other one.

Now the question is what is the best way to do so in Android.

My Main App  is  A
Open Source code is  B

So A will give some data to B. B will process this and sends data back
to A. B may not need to have any UI.

1. Is it possible to install 2 seperate applications / processes from
one APK?
2. What is the best way ?Should B be a service? How will be the
communication between A and B ?
3. Is it possible to run/call B from A?

Pls. advice



3. Parental Control Android 2.1 for Samsung Moment

4. Parental Control Android 2.1 for Samsung Moment

5. A question about "sample sync adapter" of

6. Correct way of making a simple "talking parrot" app

7. Screen flickering issue in Launcher App