问题
I created an android application with a logout option in onCreateOptionsMenu
. The Logout works perfectly but when I press the back button again it takes me to the previous activity, and when it gets a null value it redirects to login screen. Now my login screen appears again and again. I want to close the app completely when I press the back button but don't know how.
Here is my code to handle the back button press in the login screen:
@Override
public void onBackPressed() {
new AlertDialog.Builder(this)
.setTitle("BidNEMO")
.setMessage("Are you sure you want to exit?")
.setNegativeButton(android.R.string.no, null)
.setPositiveButton(android.R.string.yes, new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Main.super.onBackPressed();
finish();
}
}).create().show();
}
please help guyss..
回答1:
To Quit Application
on Button click use this code :
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
Try it..
To kill the complete app and remove it from Running
app list kill the app through its pid
(its nasty)... use this lines before above code.
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
回答2:
If you want to close application completely you should use finishAffinity();
instead of finish()
.
It will clear all stack of activities previously opened by an application.
回答3:
For Xamarin Users:
int pid = Android.OS.Process.MyPid();
Android.OS.Process.KillProcess(pid);
put it in your OnDestroy()
function.
Edit:
After investigating it thoroughly, I found out that even the above code I wrote does not "Kill" the app totally (deleting it from task manager - "recent apps"). Eventually, after a lot of code tryouts, I managed to figure something out, Overriding "Finish" functions with this code:
public override void Finish()
{
if (Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
base.FinishAndRemoveTask();
}
else
{
base.Finish();
}
}
this is the sole solution for that question!
回答4:
To Finish an Activity I'm using this code:
public void appExit () {
this.finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} //close method
or kill Process with this code:
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
回答5:
For API 21 and up
finishAndRemoveTask()
You can call this to close the app completely. All activities will finish()
and the app is removed from the task list.
回答6:
Even if it looks ok killing process will cause you headache in future. You can ensure this by following use case:
- call several activities to populate activities stack
- call android.os.Process.killProcess(pid);
- open your application
OBSERVED: Your application opens not from main activity in inconsistent way. This is because Android consider killing of process like crash.
You can find more detailed information here: Is quitting an application frowned upon?
回答7:
android.os.Process.killProcess(android.os.Process.myUid());
I think this is better. How about it ?
来源:https://stackoverflow.com/questions/21130493/how-to-close-android-app-completely