Donal Rafferty
Donal Rafferty

Reputation: 19826

Android - Activity behaviour?

I have a small Android application with a TabScreen as my main screen. I have a small problem where my application currently loses focus on the last Activity the user was on.

This is the scenario:

  1. User launches application
  2. Application shows login screen
  3. User enters login details and goes to tab screen
  4. User leaves application via home key
  5. User presses application icon to return to app and the login screen displays again

I want the application to return to the last known displayed Activity in this case.

What I do at the minute is launch the login screen as the Main/Launcher Actvitiy, then when correct credentials are entered launch the tab screen activity and finish the Login activity.

Is there a launch mode or something I should be using to achieve this?

EDIT: More info

The Tab screen is launched simply like this:

Intent intentTabActivity = new Intent(getApplicationContext(), TabScreenActivity.class);
startActivity(intentTabActivity);

Leaving the application through the home button.

I intend to persist the login state and bypass the login but on smaller applications I have created the application returns to the last displayed activity automatically and does not return to the initial Launcher screen every time and I was wondering why this is not the same behavior in this application.

Also as per my other question HERE the behavior seems to be different for debug and signed releases.

This has always been tested on real devices.

Upvotes: 0

Views: 195

Answers (3)

Naresh
Naresh

Reputation: 1336

on home button only onStop is called, are you doing finish of activity on onStop? If not it preserves what was the activity which is top of the stack.

Upvotes: 1

Andro Selva
Andro Selva

Reputation: 54322

Might be because you are using your onPause() so that your tabs does some action when the tab is passed. So eventually when the home key is pressed onPause() will be called which might lead you to this problem. Maybe you will have to check your onPause() for this case.

Upvotes: 1

PravinCG
PravinCG

Reputation: 7708

This is the correct behavior. Essentially what happens is as soon as the activity goes in the background it is on the mercy of Android DVM. If DVM feels it needs space it will essentially go ahead and kill your application. So once you try to start the application from the icon it actually restarts it from scratch.

However to solve your problem, you should have a checkbox like "Automatically login" or "Remember password" on the login screen and when the user checks it everytime the app opens it should automatically log you in and take to the next screen. This behavior needs to be implemented by you using some sort of persistent storage.

Upvotes: 3

Related Questions