Yossi
Yossi

Reputation: 1236

How to finish() an Activity when Home button pressed

For a complicated reason I need to be able to finish() my activities when the user presses the HOME button.

The story here is that I have a homescreen widget that launches a different part of my application that has a completely transparent activity (so the homescreen keeps showing even though my activity is running). If the previous activities were terminated via Home button, they are brought to the foreground and obscure the home screen.

Or as alternative, can I have the new activity somehow force finish() the previous activity?

Upvotes: 9

Views: 17173

Answers (5)

kowalsska
kowalsska

Reputation: 1

@Override
public void onStop() {
    super.onDestroy();
}

Upvotes: -1

Quang Long
Quang Long

Reputation: 31

Set android:clearTaskOnlaunch="true" on the activity launched from the home screen. Example:

<activity
            android:name="MainActivity"
            android:exported="true"
            android:clearTaskOnLaunch="true"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Upvotes: 3

dylan murphy
dylan murphy

Reputation: 1370

what about

android:launchMode="singleTask"

or

android:launchMode="singleInstance"

in your manifest? i think singleTask is the one you want, but im still not crystal clear on what you are doing.

"The system creates the activity at the root of a new task and routes the intent to it. However, if an instance of the activity already exists, the system routes the intent to existing instance through a call to its onNewIntent() method, rather than creating a new one." singleTask

@Override
void onPause() {
   super.onPause();
   finish();
}

dev docs: Acitvity Lifecycle , Finish

Upvotes: 12

JDK
JDK

Reputation: 1

I had the problem with closing the sound on home button is pressed. I did this code below. Hope it wil help you. Override onpause() method.

 @Override
 public void onPause(){
      System.exit(0);
      super.onPause(); 
 }

Upvotes: 0

JDx
JDx

Reputation: 2655

Not sure about finish() on home button press but i think you can finish() the previous activity using:

Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
finish();

Probably not the best way of doing it though. I think you can also call the parent activity of a subactivity and finish it that way but not sure.

Upvotes: 0

Related Questions