2015-02-10 76 views
-4

tl; dr:问题底部的方法是退出Android应用程序的合理方法吗?我的方法是明智地退出Android应用程序吗?


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

我已经收到了一些'退出按钮集成到播放器的请求。 Issue。我为每项活动的菜单添加了退出选项,例如

enter image description here

我已经尝试了一些方法来退出应用程序,其中包括:

  • 发送有意向与“退出”额外给我的第一活动reference
  • 按照here所述广播“退出”消息。

这两种方法都存在一些问题。第一种方法从未奏效 - 我会按照示例中所述调用startActivity,但活动收到的意图从未包含我的“退出”标志。

第二种方法大部分时间工作,但如果我允许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

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

+0

那些谁downvoted - 请你评论和解释为什么? – 2015-02-10 14:14:00

回答

0

明智地退出Android应用程序吗?

在大多数情况下,Android上的任何退出都是不合理的,也不是必需的。在你的情况下,当用户点击“停止”(或添加“X”按钮以摆脱用户需求的通知)时,最有可能移除正在进行的通知。

+0

为什么没有理由或需要? – 2015-02-10 14:13:15

+0

因为应用程序退出的概念在Android上没有意义。如果你的应用程序被正确编写,它将会“睡觉”,除非再次需要(除非它在背景中有意地做某些事情,比如播放音乐等)。退出应用程序释放任何东西都没有意义。如果事情做得对,Android会在你确实需要**时清理你的应用**。 – 2015-02-10 14:16:04

+0

就我而言,我觉得有必要避免两步“退出”。我的应用程序有一个后台服务(播放音乐),用户希望能够停止该服务并退出应用程序。如果我没有明确退出我的应用程序,用户将被迫1.停止服务2.按“home”。 我想给他们一个按钮,这两个任务。诚然,两个步骤并不比一个糟糕,但我没有看到退出应用程序的不利方面,除了违反Android约定。 – 2015-02-10 14:24:12