我明智地退出Android应用程序的方法是什么?

时间:2015-02-10 12:04:33

标签: android android-intent

tl; dr:此问题底部的方法是否是退出Android应用程序的合理方法?


我维护一个Android音乐播放器应用程序。 Source

我已经要求将一个“退出”按钮集成到播放器中。 Issue。我已在每个活动的菜单中添加了退出选项,例如

enter image description here

我尝试了一些退出应用程序的方法,包括:

  • 使用"退出"发送意图我的第一个活动reference
  • 广播"退出"消息如here所述。

这两种方法都存在一些问题。第一种方法从未奏效 - 我按照示例中的描述调用了startActivity,但是Activity收到的意图从未包含我的"退出"标志。

第二种方法大部分时间都有效,但如果我允许Android在我的后台堆栈上销毁活动,然后点击退出,活动将重新启动(显然是在收到"退出"广播后) )。我可以通过使用开发人员选项在离开视图后立即销毁所有活动来不断重新创建此问题。

我决定采用的方法是播放"退出"消息显式启动主屏幕:

if (id == R.id.action_exit) {
    // I had issues just broadcasting the "exit" intent
    // if the other activities on the stack had finished, 
    // they were re-created, presumably *after* the broadcast had been sent
    Intent broadcastIntent = new Intent();
    broadcastIntent.setAction("com.smithdtyler.ACTION_EXIT");
    sendBroadcast(broadcastIntent);
    // To make sure we exit, *first* send the broadcast (this makes sure the MusicPlaybackService shuts down)
    // then launch the home screen 
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(startMain);
    finish();
    return true;
}

我的退出方法的完整源代码可用here

这种方法一直在测试,但我很好奇是否有可能的用户配置,我可以忽略这可能导致问题的地方。

1 个答案:

答案 0 :(得分:0)

  

明智地退出Android应用程序?

在大多数情况下,Android上的任何退出都是不合理的,也不需要。在您的情况下,只要用户点击“停止”(或添加“X”按钮以消除用户需求的通知),就很有可能删除正在进行的通知。