Reputation: 1236
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
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
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
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
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