当用户按下intent上的后退按钮时,应用程序应该退出.如何在按下后退按钮时确保应用程序退出?
我知道我的析构函数在堆栈的正常展开时调用,并且在抛出异常时调用,但是在调用exit()时调用.
还有其他情况我的析构函数不会被调用吗?信号如SIGINT或SIGSEGV怎么样?我认为对于SIGSEGV,它们不会被调用,但对于SIGNINT它们是,我怎么知道哪些信号将展开堆栈?
还有其他情况不会被召唤吗?
可能重复:
android - 退出应用程序代码
我是android的初学者,我正在练习一个有2个标签和1个退出按钮的项目.但是当我在android手机中运行这个项目时,退出按钮不起作用,它根本不会退出.
如何使退出按钮工作?
对于程序菜单中的"q"(退出)选项,我有以下代码:
elif choice == "q":
print()
Run Code Online (Sandbox Code Playgroud)
这是可行的,直到我把它放在一个无限循环,这不断打印空行.有没有可以退出程序的方法?另外,你能想到另一种解决方案吗?
使用一些错误代码退出程序的惯用方法是什么?
Exit
说"程序立即终止;延迟函数不运行.",log.Fatal
只是调用的文档Exit
.对于没有令人发指的错误的事情,在不运行延迟函数的情况下终止程序似乎是极端的.
我是否应该传递一些状态,表明存在错误,然后Exit(1)
在某些时候调用我知道我可以安全退出,所有延迟函数都已运行?
在我的应用程序中,我希望退出应用程序时按下后退按钮,这是我的代码:
@Override
public void onBackPressed() {
new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit")
.setMessage("Are you sure you want to exit?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).setNegativeButton("No", null).show();
}
Run Code Online (Sandbox Code Playgroud)
它的工作正常,但是当我从应用程序退出时,它不会完全退出并显示带有我的应用程序徽标的空白页面,当我再次按下按钮从应用程序退出时,我该如何解决?
编辑:
我使用此代码而不是上面但我的应用程序完全退出但我希望它在后台运行并且不会完全退出,我该怎么做?
@Override
public void onBackPressed() {
new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit")
.setMessage("Are you sure?")
.setPositiveButton("yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
}
}).setNegativeButton("no", null).show();
}
Run Code Online (Sandbox Code Playgroud) 你如何以编程方式优雅地关闭资源管理器?
我的意思是,你如何以编程方式调用此函数:
编辑:图片中的错字,应该说"Ctrl-Shift-Right-Click"而不是"Shift-Click".
这个C++程序是一个CGI脚本,我不想处理异常.我宁愿获得边际性能提升,让操作系统(Linux)在进程终止后处理清理.
我正在使用标准C++库,并希望die
在Perl中使用任何函数:每当它抛出异常时.没有展开,或在我的过程中运行任何进一步的代码.
-fno-exceptions如何工作?如果我的代码中根本没有捕获,并且基本上假装不存在异常.但我确实使用std :: c ++库,可以 throw()?
我正在编写一个脚本然后遇到了一个奇怪的问题.如果我发来一个包含一堆函数的脚本,这些函数可以调用一个输出字符串然后退出的错误函数,它将退出我的shell.我知道为什么会这样做.这是因为函数调用与调用者处于相同的进程空间中(至少它在bash中),因此函数中的退出使用提供的退出代码终止当前进程.例:
error()
{
echo $1
exit 1
}
fn()
{
if [ $# == 0 ]; then
error "Insufficient parameters."
fi
# do stuff
}
$ fn
Insufficient parameters.
[shell terminates]
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,我可以退出函数堆栈中的所有函数而不终止当前的shell并且不生成新的子shell吗?
谢谢