代码之家  ›  专栏  ›  技术社区  ›  Vector

如何在Kotlin中关闭Android应用程序

  •  0
  • Vector  · 技术社区  · 6 年前

    在JAVA中,我们可以关闭应用程序。我们试图开发与Kotlin的技能,并感觉我们正在使用正确的语法来关闭应用程序。问题是,只有在转到第二页前关闭应用程序并返回到MainActivity(下面的启动程序活动代码)时,该代码才起作用

        fun onTV(view: View){
        exitProcess()
    }
    
    private fun exitProcess() {
        //finish()
        System.exit(-1)
    }
    

    完成和系统.EXIT(-1)工作如果没有导航首先选择 到PageTwoActivity

    我的猜测是我们需要清除堆栈购买设置标志,所以问题是 Kotlin中的语法是什么?记住我们在启动页面上 主要活动。我们需要一个结果的意图吗?

    好吧,我试过这个代码,但没有任何改进

        val intent = Intent(context, MainActivity::class.java)
        intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOIntent.FLAG_ACTIVITY_NEW_TASK
        finish()
    

    我们已经接近这里的代码,现在它仍然是问题,虽然这将关闭应用程序,如果你不导航到第二页,并点击按钮关闭应用程序后,立即启动

        fun onTV(view: View){
        onBYE()
    }
    
     fun onBYE() {
         exitProcess(-1)
     }
    

    所以我想问题是当onBYE被执行时如何从堆栈中清除page2?

    2 回复  |  直到 6 年前
        1
  •  8
  •   James_Duh    6 年前

    这里是关闭Kotlin应用程序最简单的两种方法 不是很优雅,但我有可能有人有一个闪屏

         moveTaskToBack(true);
         exitProcess(-1)
    

    第二种方法是如此简单和古老你会尖叫 它将关闭Kotlin应用程序,当重新加载时,首先显示MainActivity

    finishAffinity()
    

    我用nexus9api26测试过,我没有三星Galaxy S2 但你可以给我寄一封,哈哈

        2
  •  1
  •   Marcos Vasconcelos    6 年前

    val intent = Intent(context, MainActivity::class.java)
    intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOIntent.FLAG_ACTIVITY_NEW_TASK
    intent.putBooleanExtra(MainActivity.FINISH, true)
    finish()
    

    将FINISH声明为 val FINISH = "finish_key_extra"

    并在创建MainActivity时添加此代码

    super.onCreate(state)
    boolean finish = getIntent().getBooleanExtra(FINISH, false) //default false if not set by argument
    if(finish) {
        finish();
        return;
    }
    

    因为您使用CLEAR_TOP和NEW_TASK,所以堆栈上只有一个活动,所以您通过发送参数来完成它。

    我提到的另一个解决方案是用 startActivityForResult(intent, REQUEST_CODE_X)

    void onActivityResult(int requestCode, int resultCode, Bundle result) {
         if(requestCode == AppIntents.REQUEST_CODE_X)
             if(resultCode == FINISH_APP){
                 setResult(FINISH_APP);
                 finish();
             }
    }
    

    在任何时候,您都要开始关闭您调用的应用程序:

                 setResult(FINISH_APP);
                 finish();
    

    注意:我是Java开发人员,不是kotlin