I Found some codes for quit an Android application programatically. By calling any one of the following code in onDestroy() will it quit application entirely?
you can your full apps quit. thus
Intent intent = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
intent .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
it will work 100%. Best of luck!
We want code that is robust and simple. This solution works on old devices and newer devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
getActivity().finishAffinity();
} else{
getActivity().finish();
System.exit( 0 );
}
You can use finishAndRemoveTask ()
from API 21
public void finishAndRemoveTask ()
Finishes all activities in this task and removes it from the recent tasks list.
@Sivi 's answer closes the app. But on return, if you have some child activities, another unfinished activity might be opened. I added noHistory:true
to my activities so the app on return starts from MainActivity.
<activity
android:name=".MainActivity"
android:noHistory="true">
</activity>
Friends just add this function to exit your application programmatically #java
public void onBackPressed()
{
finishAffinity();
System.exit(0);
}
I'm not sure if this is frowned upon or not, but this is how I do it...
Step 1 - I usually have a class that contains methods and variables that I want to access globally. In this example I'll call it the "App" class. Create a static Activity variable inside the class for each activity that your app has. Then create a static method called "close" that will run the finish()
method on each of those Activity variables if they are NOT null. If you have a main/parent activity, close it last:
public class App
{
////////////////////////////////////////////////////////////////
// INSTANTIATED ACTIVITY VARIABLES
////////////////////////////////////////////////////////////////
public static Activity activity1;
public static Activity activity2;
public static Activity activity3;
////////////////////////////////////////////////////////////////
// CLOSE APP METHOD
////////////////////////////////////////////////////////////////
public static void close()
{
if (App.activity3 != null) {App.activity3.finish();}
if (App.activity2 != null) {App.activity2.finish();}
if (App.activity1 != null) {App.activity1.finish();}
}
}
Step 2 - in each of your activities, override the onStart()
and onDestroy()
methods. In onStart()
, set the static variable in your App class equal to "this
". In onDestroy()
, set it equal to null
. For example, in the "Activity1" class:
@Override
public void onStart()
{
// RUN SUPER | REGISTER ACTIVITY AS INSTANTIATED IN APP CLASS
super.onStart();
App.activity1 = this;
}
@Override
public void onDestroy()
{
// RUN SUPER | REGISTER ACTIVITY AS NULL IN APP CLASS
super.onDestroy();
App.activity1 = null;
}
Step 3 - When you want to close your app, simply call App.close()
from anywhere. All instantiated activities will close! Since you are only closing activities and not killing the app itself (as in your examples), Android is free to take over from there and do any necessary cleanup.
Again, I don't know if this would be frowned upon for any reason. If so, I'd love to read comments on why it is and how it can be improved!