Question

[Solved] Finish all activities when back button is pressed

I have an android application that has 3 activites. For the 1st and 2nd activity I want the back button to exit all existing activities.

At the moment the back button is exiting the activity it is initiated on but if its pressed on the 2nd activity, the 1st activity will be displayed, rather than exiting the application as the 1st activity leads on to the 2nd.

The reason I require this functionality is because the 1st and 2nd activities use chronometer timers which continue to run when the HOME button is presssed which I want. But I need a way to reset the timers to fully exit the application using the BACK button.

Here is my code for the back button which in present in both the 1st and 2nd activities.

@Override
 public void onBackPressed() { // method for exit confirmation
  AlertDialog.Builder builder = new AlertDialog.Builder(BreakActivity.this);
  builder.setMessage("Are you sure you want to exit?")
         .setCancelable(false)
         .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int id) {
                  BreakActivity.this.finish();
             }
         })
         .setNegativeButton("No", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int id) {
                  dialog.cancel();
             }
         });
  AlertDialog alert = builder.create();
  alert.show();

        }         
  };  

I have researched the possibility of using the following code:

intent = new Intent(this, FinActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent)
finish();

However, I’m not sure where this should be implemented and I really only want to end all the applications if ‘Yes’ is selected after the confirmation message is displayed after the BACK button is pressed (see first code snippet).

Any help in getting this working would be greatly appreciated!

Thank you

Enquirer: Rob

||
Solution #1:

@Rob when you are navigating from activity 1 to 2 and 2 to 3 with intent
use finish function

like

 i=new Intent(Main_Menu.this, ABC.class);
          finish();
         startActivity(i);

It will kill the activity from which you will go to next activity
and then when you press the backbutton it will take you outside the application ,
because there will be no activity in the stack

Respondent: Avi Kumar Manku
Solution #2:

you can use this

        finish();
        Intent intent = new Intent(Intent.ACTION_MAIN); 
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        intent.addCategory(Intent.CATEGORY_HOME); 
        startActivity(intent);

note one thing always avoid system.exit to quit from application it is not recomended and may caus various problems

https://groups.google.com/forum/?fromgroups#!topic/android-developers/Y96KnN_6RqM

Close application and launch home screen on Android

Respondent: vipin
Solution #3:

Use this line of code:

System.exit(1);

//The integer 1 is just a return code.

how to close whole application in android

Respondent: Ravi1187342
Solution #4:

Don’t call any System.exit or something else!
Android architecture is built to self managment of processes. Android itself decides when to kill app process.

When you killing your application by hand you are creating additional overhead for user device.

Try to manually reset your timers and revise your app architecture.

Respondent: pepyakin
Solution #5:

You can use-

Process.killProcess(android.os.Process.myPid());
Respondent: Jiang Qi
The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Most Popular

To Top
India and Pakistan’s steroid-soaked rhetoric over Kashmir will come back to haunt them both clenbuterol australia bossier man pleads guilty for leadership role in anabolic steriod distribution conspiracy