Android App退出按钮

时间:2010-11-03 16:55:23

标签: android button exit

我不确定是否需要在我的应用中添加退出按钮。这样做有什么意义吗?如果退出一个活动或服务不是.finish()或正确关闭会导致很多损害吗?

10 个答案:

答案 0 :(得分:18)

您无需添加退出按钮。如果不这样做,您的活动将保留在内存中,直到系统回收它为止。它不会消耗任何CPU。

当然,如果你有任何工作线程在运行,你应该在onStop()或onPause()中停止它们,具体取决于你的线程在做什么。

由于某种原因,许多应用程序添加了一个退出按钮。我想原因是他们不相信自己编写正确的代码,或者他们不相信Android操作系统可以正常清理。

不通过正确的完成程序不会对他人造成任何损害。

答案 1 :(得分:8)

任何说你不需要退出按钮的人都是正确的但是从不伤害它。用户喜欢看到退出应用程序的方法,这不是关于糟糕的编程,它实际上是关于正确的编程,给用户一个退出按钮,如果他们从来没有使用它很好,如果它更好。

答案 2 :(得分:7)

您的应用中不需要退出按钮。这就是android的工作原理。用户无法以任何方式实际退出应用程序。

当你调用'finish'时,应用程序堆栈就会被推到后台。它仍然存在于记忆中。 Android本身决定何时关闭应用程序(即从内存中删除它的实例),通常当你的应用程序成为最长时间未使用的最旧的应用程序时,这就完成了。

答案 3 :(得分:4)

不,你没有。阅读developer.android.com上的活动生命周期

在旧版本的Android上,你必须小心,不要意外地让后台服务运行并持有资源,但这已被重做。

答案 4 :(得分:2)

你是正义的,但有些情况下退出按钮可能有意义。假设您在YourApplication类(Application的子代)中保留了一些应用程序范围的全局数据,例如一些敏感数据左右。当用户关闭最终活动并且它被销毁时,应用程序将不会终止。 As read Android developer resource - 开发人员不应该依赖Application.onTerminate()方法。您可以轻松检查它 - 即使在所有活动关闭的情况下应用程序仍然存在。每当Application实例处于活动状态时,访问这些对象并收集数据相对容易。

我找到了两种杀死Application类实例的方法:

  1. null'ate所有对象引用(大型项目几乎不可能)然后调用垃圾收集
  2. 呼叫

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

  3. 因此,退出按钮可能具有完成所有活动的功能,调用垃圾收集然后调用killProcess() - 这将保证安全删除存储在Application中的全局数据。

答案 5 :(得分:2)

我同意barmaley的上述帖子。

简而言之,如果您的问题与Android系统本身有关,则无需退出应用程序。别担心,快乐。这尤其适用于懒惰用户(请记住旧的Symbian日)。

但是,如果您对应用程序本身有所了解,那么请继续执行。你可以完成活动,取消和杀死。只是合情合理,因为一如既往,常识会比世界上所有的教程和参考文献都要好。

无论如何,只是我的2c。

答案 6 :(得分:1)

从技术角度来看,不,您不需要为此处列出的所有原因添加退出按钮。

不幸的是,用户不会以这种方式获知,并且会定期删除评论分数,因为他们必须“使用任务杀手”或“强行关闭”您的应用。

这是对我的应用的评论/反馈的定期请求和批评。所以可能有必要安抚用户。

答案 7 :(得分:1)

我认为退出按钮可以让用户确保您的应用已关闭。

我知道,它仍然并不意味着该应用程序肯定是关闭的,但如果用户感觉更有控制权使用退出按钮,那么我说这是一个好主意。

答案 8 :(得分:0)

当我第一次开始编写Android代码时,我认为手动退出主要活动是个好主意。我发现通过stopSelf关闭活动会导致实例状态损坏,当活动再次打开时会导致很多ANR。

活动生命周期文档是直接来自Google框架工程师的信息。每个字都是有原因的。

考虑垃圾收集需要cpu。这看起来似乎微不足道,但在为移动平台设计框架时,如果再次需要,你是否会尝试在内存中尽可能多地缓存,因为cpu time = battery,而从flash加载是否昂贵?

对整个应用程序进行GC操作非常重要。特别是当活动可能反复使用时。设计必须考虑所有可能的用例。缓存是有道理的。该系统采用这一原则设计。

我想说不遵循活动生命周期文档就是在问问题。

答案 9 :(得分:0)

某些应用会在运行时更改设备配置或消耗大量CPU或数据。您可能希望为用户提供完全退出应用程序的选项。

正确的用例,用于退出按钮。

例如,我制作的应用程序还需要管理WiFi网络:设备配置会不断更改。应用程序处于活动状态时非常棒,在这种情况下,用户会希望在退出应用程序后行为有效停止。

所以我的应用程序有一个Exit按钮,主要用于清理它创建的WiFi配置。我可以制作一个按钮停止和清理,但没有用户会理解。他们只想关闭应用程序,然后退出。

  • 应用程序运行:由app管理的wifi。
  • App退出:diy / android wifi。

现在,在我的应用程序中选择Exit会进行清理,然后是finish(),但应用程序本身会在后台继续存在。功能正常但令用户感到困惑。我可以进行一个名为“wifi功能开/关”的切换操作,但不会使事情变得更简单。