继续我学习Android的尝试,我只是阅读以下内容:
问题:用户是否可以选择终止应用程序,除非我们使用菜单选项来杀死它?如果不存在这样的选项,用户如何终止该应用程序?
答案:(Romain Guy):用户没有,系统会自动处理.这就是活动生命周期(特别是onPause/onStop/onDestroy)的用途.无论你做什么,都不要放"退出"或"退出"应用程序按钮.它与Android的应用程序模型无关.这也与核心应用程序的工作方式相反.
呵呵,我在Android世界中采取的每一步都会遇到某种问题=(
显然,你无法在Android中退出应用程序(但Android系统可以很好地完全破坏你的应用程序).那是怎么回事?我开始认为编写一个充当"普通应用程序"的应用程序是不可能的 - 用户可以在他/她决定这样做时退出应用程序.这不应该依赖操作系统来做.
我尝试创建的应用程序不是Android Market的应用程序.它不是一般公众"广泛使用"的应用程序,它是一个将用于非常狭窄的业务领域的商业应用程序.
我实际上真的很期待为Android平台开发,因为它解决了Windows Mobile和.NET中存在的许多问题.然而,上周对我来说有点懈怠...我希望我不必放弃Android,但它现在看起来不太好=(
有没有办法让我真的退出申请?
我有一个应用程序,在主页上我有通过应用程序导航的按钮.
在那个页面上,我有一个"EXIT"按钮,当点击它时,应该将用户带到应用程序图标所在的手机上的主屏幕.
我怎样才能做到这一点?
我确信这个问题已经被问了很多次,因为我读了几个.我的客户希望我在他的应用程序中放置一个按钮,用户可以单击并退出.我已经读过这个,发现打电话finish()
会这样做.但是,完成只关闭当前正在运行的活动吗?我有很多活动,所以在这种情况下,我必须传递每个活动的实例并完成它们或将每个活动变成Singleton模式.
我也知道Activity.moveTaskToBack(true)
可以让你进入主屏幕.好的,这不是关闭,而是背景化过程.那么这是有效的吗?
我应该使用哪种方法完全关闭应用程序?上述方法中的任何一种方法或上述方法的任何其他方法/其他用法?
我需要完成一个Android应用程序.为此我写了
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure You want to exit")
.setCancelable(false)
.setPositiveButton("YES"),
new DialogInterface.OnClickListener() {
// On
// clicking
// "Yes"
// button
public void onClick(DialogInterface dialog,int id) {
System.out.println(" onClick ");
closeApplication(); // Close Application method called
}
})
.setNegativeButton("NO"),
new DialogInterface.OnClickListener() {
// On
// clicking
// "No"
// button
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
private void closeApplication() {
System.out.println("closeApplication …
Run Code Online (Sandbox Code Playgroud) NavController 无法以编程方式弹出堆栈中最新的 @Composable。即,如果它是根页面,则 popBackStack() 不起作用。因此,可以通过点击“关闭”按钮视图来关闭应用程序,并且只有硬件后退键允许离开应用程序。
示例:活动
class AppActivity : ComponentActivity() {
override fun onCreate(state: Bundle?) {
super.onCreate(state)
setContent {
val controller = rememberNavController()
NavHost(controller, startDestination = HOME) {
composable(HOME) { HomePage(controller) }
...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
主页.kt
@Composable
fun HomePage(controller: NavController) {
Button(onClick = {
controller.popBackStack()
}) {
Text("Exit")
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
如果使用 Compose Navigation,如何在 onClick 处理程序中关闭应用程序。
finish()
如果满足某个条件,我正在打电话.然而,即使finish()
我拿着主页按钮,我仍然可以在那里看到我的应用程序.如果杀死这个过程不是一个理想的选择,我该怎么办?
这是我打电话的地方finish()
:
protected void onStart() {
.............
if(today.equals("..."))
finish();
};
Run Code Online (Sandbox Code Playgroud)
我知道完成将完成活动,但为什么它仍然可以在任务管理器中看到?我已经完成了.
我正在使用 react native 开发移动应用程序,我想在单击按钮后退出该应用程序。
我的情况是,如果用户在某些天后没有验证他/她的电子邮件,我会在每次打开应用程序时提示用户一个警报对话框,阻止应用程序使用,直到用户电子邮件被验证。
那么在用户点击确定后,我如何以编程方式退出应用程序?
我的应用程序在Android 10
具有以下调用堆栈的设备上崩溃:
backtrace:
#00 pc 000000000006f06c /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
#01 pc 00000000000500fc /system/lib64/libc++.so (abort_message+232)
#02 pc 0000000000050218 /system/lib64/libc++.so (demangling_terminate_handler()+44)
#03 pc 00000000000646c4 /system/lib64/libc++.so (std::__terminate(void (*)())+12)
#04 pc 000000000006466c /system/lib64/libc++.so (std::terminate()+52)
#05 pc 00000000000bb150 /system/lib64/libc++.so (std::__1::thread::~thread()+20)
#06 pc 00000000000d0f48 /apex/com.android.runtime/lib64/bionic/libc.so (__cxa_finalize+212)
#07 pc 00000000000cc930 /apex/com.android.runtime/lib64/bionic/libc.so (exit+24)
#08 pc 0000000000032f30 /data/app/com.domain.myapp-Rs_sm5VrLR1Jj8QW6oYByA==/lib/arm64/libplugins_platforms_qtforandroid_arm64-v8a.so
Run Code Online (Sandbox Code Playgroud)
我不知道什么时候以及为什么会发生这种情况,因为我无法在我的设备和模拟器上重现这一点,但这在用户端集中发生,并且只发生在Android 10
(不是在以前的 Android 版本上)。
我的QT
版本是 5.14.2。
我在我的应用程序中使用了这里的代码,当我点击"取消"选项时,应用程序只是最小化,当我长按住主页按钮并选择应用程序时.它显示相同的屏幕而不是闪屏或通常的方式应用程序启动 - 所以我假设它只是带我到主屏幕.我正在寻找一种可以完全关闭主要活动的方法.
我尝试了以下方法,每次都崩溃了:
finish();
mainactivity.class.finish();
systemexit()
setresult()
在另一项活动中.我需要退出我的应用程序,我已经引用了 Stack Overflow 和其他网站上的所有链接,我已经使用了,,finishAffinity()
仍然无法实现它。我正在重写主活动中的 onBackPressed 方法并终止应用程序。finish()
System.exit(0)
实际上,当我启动应用程序后按后退按钮时,它工作得很好。但是当我继续进行其他活动并返回 MainActivity 时,它不起作用。如果我使用finishAffinity()
它,则打开我的相机活动,这是我在项目中的活动之一。如果我使用finish()
它就是打开我的第二页活动。
我将发布我的代码以供参考。
MainActivity.Java
@Override
public void onBackPressed()
{
if (back_pressed + 2000 > System.currentTimeMillis())
{
Log.e("called", "back pressed");
finish();
}
else {
Toast.makeText(getBaseContext(), "Press twice to exit!", Toast.LENGTH_SHORT).show();
}
back_pressed = System.currentTimeMillis();
}
Run Code Online (Sandbox Code Playgroud) 如何在主要活动的背面退出应用程序?我正在使用此代码,但它完成主要活动并显示来自后台的其他活动.
@Override
public void onBackPressed() {
finish();
}
Run Code Online (Sandbox Code Playgroud) 我想以编程方式退出应用程序。我怎样才能做到这一点 ?
我研究了很多但没有找到任何解决方案,请问有什么建议或示例代码吗?
我的适配器类中有一个按钮。当我点击它时,我想关闭应用程序。我怎样才能做到这一点 ?
这是我在适配器类中的点击事件
public class FooterViewHolder extends ViewHolder {
public FooterViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MyPageActivity)mContex).finishAffinity();
}
});
}
}
Run Code Online (Sandbox Code Playgroud) android ×11
back-button ×1
eclipse ×1
exit ×1
facebook ×1
ios ×1
java ×1
javascript ×1
kotlin ×1
qt ×1
react-native ×1