无法在安卓系统中关闭应用程序

3
我刚接触安卓和Java。我创建了9个活动(屏幕),每个屏幕上都有一个下一步按钮,以导航到下一个屏幕,第9个屏幕有一个退出按钮来关闭应用程序。但是,如果我调用finish()或android.os.process.killProcess api,它会返回到前一个屏幕,但无法关闭整个应用程序。
请提供代码片段以关闭整个应用程序。

Android的设计并不支持通过选择退出应用程序,而是由操作系统来管理。您可以通过相应的Intent调用主屏幕应用程序:Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); - Nikhil C George
你也可以从AndroidManifest.xml文件中实现这个功能,只需在那些你不想返回到之前活动的<activity>中添加android:noHistory="true"属性。 - Nikhil C George
您可以在退出onClick()时使用以下代码:moveTaskToBack(true);但是,当您再次启动应用程序时,屏幕上会显示上一个活动。 - Rishi
可能是退出应用程序-这是否被认为是不好的?的重复。 - CommonsWare
3个回答

2
如果您不想返回之前的活动,则在启动新活动之前finish()每个活动即可。
Intent intent = new Intent(this, Second.class);
startActivity(intent);
finish();

第二种选择是在每个Activity中使用startActivityForResult(),并在执行回调的最后一个Activity中使用setResult(),以便向所有先前的Activities发送onActivityResult()finish()

int AnyNumber = 123;
Intent intent = new Intent(this, Second.class);
startActivityForResult(intent, AnyNumber);

覆盖onActivityResult()

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(requestCode == MyRequestCode){
            if(resultCode == Activity.RESULT_OK){
                finish();
            }
        }
    }

在每个活动中都要执行此操作,并在第9个活动中设置结果。

setResult(Activity.RESULT_OK);

这会回调并结束所有活动,具体取决于requestCode


这不是更好的方式,或者我们可以说这不是确切的解决方案。 - Ramesh Solanki

0

在主Activity中:

android.os.Process.killProcess(android.os.Process.myPid());

1
这并不被推荐,因为它可能会让Android处于不确定的状态。 - CommonsWare

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接