Pea*_*Gen 71 java eclipse android android-activity
我确信这个问题已经被问了很多次,因为我读了几个.我的客户希望我在他的应用程序中放置一个按钮,用户可以单击并退出.我已经读过这个,发现打电话finish()会这样做.但是,完成只关闭当前正在运行的活动吗?我有很多活动,所以在这种情况下,我必须传递每个活动的实例并完成它们或将每个活动变成Singleton模式.
我也知道Activity.moveTaskToBack(true)可以让你进入主屏幕.好的,这不是关闭,而是背景化过程.那么这是有效的吗?
我应该使用哪种方法完全关闭应用程序?上述方法中的任何一种方法或上述方法的任何其他方法/其他用法?
小智 61
实际上每个人都在寻找关闭onclick事件的应用程序,无论哪里可能是活动....
所以有朋友试试这段代码.将此代码放在onclick事件上
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
Run Code Online (Sandbox Code Playgroud)
Anc*_*tal 43
你可以调用System.exit(); 摆脱所有的活动.
submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
});
Run Code Online (Sandbox Code Playgroud)
Pir*_*hah 34
如果要退出应用程序,请在按下按钮的事件中使用此代码:
public void onBackPressed() {
moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
Run Code Online (Sandbox Code Playgroud)
Shr*_*nda 23
从api 16开始,你可以使用finishAffinity方法,它似乎非常接近通过名称和javadoc描述关闭所有相关活动:
this.finishAffinity();
Run Code Online (Sandbox Code Playgroud)
完成此活动以及当前任务中具有相同亲缘关系的紧接其下的所有活动.这通常在应用程序可以启动到另一个任务时使用(例如从它理解的内容类型的ACTION_VIEW),并且用户已经使用向上导航切换出当前任务并进入其自己的任务.在这种情况下,如果用户已导航到第二个应用程序的任何其他活动,则应将所有这些活动作为任务切换的一部分从原始任务中删除.
请注意,此完成不允许您将结果传递给上一个活动,如果您尝试这样做,则会抛出异常.
从api 21开始,您可以使用非常相似的命令
finishAndRemoveTask();
Run Code Online (Sandbox Code Playgroud)
完成此任务中的所有活动,并将其从最近的任务列表中删除.
备择方案:
getActivity().finish();
System.exit(0);
Run Code Online (Sandbox Code Playgroud)
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
Run Code Online (Sandbox Code Playgroud)
Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL);
Run Code Online (Sandbox Code Playgroud)
Intent i = new Intent(context, LoginActivity.class);
i.putExtra(EXTRA_EXIT, true);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(i);
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!祝好运!
Sai*_*tya 22
@Override
public void onBackPressed() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("Exit Application?");
alertDialogBuilder
.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
Run Code Online (Sandbox Code Playgroud)
Kas*_*sun 13
准确地说,有两种可能的情况:
您可以使用以下代码退出活动:
var intent = new Intent(Intent.ActionMain);
intent.AddCategory(Intent.CategoryHome);
intent.SetFlags(ActivityFlags.NewTask);
startActivity(intent);
finish();
Run Code Online (Sandbox Code Playgroud)
但这不会杀死同一应用程序中的基础活动.这只会最小化应用程序.
如果要退出应用程序,请使用以下代码结束其进程:
android.os.Process.killProcess(android.os.Process.myPid());
Run Code Online (Sandbox Code Playgroud)
对于单声道开发只是使用
process.KillProcess(Process.MyPid());
Run Code Online (Sandbox Code Playgroud)
怎么样 this.finishAffinity()
从文档中
完成此活动以及当前任务中紧接其下的所有具有相同关联性的活动。通常,当可以将应用程序启动到另一个任务上时(例如从它了解的内容类型的ACTION_VIEW启动),并且用户已使用向上导航键切换出当前任务并转到自己的任务时,通常使用此方法。在这种情况下,如果用户已导航到第二个应用程序的任何其他活动,则应将所有这些活动从原始任务中删除,作为任务切换的一部分。请注意,此操作不允许您将结果传递到上一个活动,并且如果尝试这样做,将引发异常。
android.os.Process.killProcess(android.os.Process.myPid());
Run Code Online (Sandbox Code Playgroud)