android - 退出应用程序会感到烦恼吗?

标签 android

继续尝试学习Android,我只是read the following


  问题:用户是否可以选择终止应用程序
  除非我们将菜单选项杀死?如果没有这样的选择,
  用户如何终止应用程序?
  
  答案:(Roman Guy):用户没有,系统会自动处理。这就是活动生命周期(尤其是onPause / onStop / onDestroy)的用途。无论您做什么,都不要放置“退出”或“退出”应用程序按钮。它对Android的应用程序模型没有用。这也与核心应用程序的工作方式相反。


呵呵,我在Android世界中迈出的每一步都会遇到某种问题=(

显然,您无法在Android中退出应用程序(但Android系统可以在需要时完全销毁您的应用程序)。那是怎么回事?我开始认为不可能编写一个功能像“普通应用程序”的应用程序-用户可以在决定退出应用程序时退出该应用程序。那不是应该依靠操作系统来做的事情。

我尝试创建的应用程序不是适用于Android Market的应用程序。它不是公众“广泛使用”的应用程序,而是将在非常狭窄的业务领域中使用的商业应用程序。

实际上,我真的很期待开发Android平台,因为它解决了Windows Mobile和.NET中存在的许多问题。但是,上周对我来说是个休假……我希望我不必放弃Android,但是现在看起来还不太好=(

我有办法真正退出该应用程序吗?

最佳答案

这最终将解决您的问题,但是我首先想解决您在撰写本文时已经给出的各种答案的各种评论中提出的一些问题。我无意改变您的想法-相反,这些是供将来阅读此帖子的其他人使用的。


  关键是我不能允许
  Android确定我的应用何时
  将被终止。那一定是
  用户的选择。


数以百万计的人对环境根据需要关闭应用程序的模型感到非常满意。这些用户根本不会考虑“终止” Android应用程序,而只是考虑“终止”网页或“终止”恒温器。

iPhone用户的使用方式大致相同,因为按下iPhone按钮并不一定像终止应用程序一样“感觉”,因为许多iPhone应用程序从用户离开的地方接起,即使该应用程序确实关闭了(因为仅iPhone)目前一次允许一个第三方应用)。


  正如我上面所说的,有很多
  我的应用中发生的事情(数据正在
  推送到设备,列出任务
  总是应该在那里等)。


我不知道“列出应该始终存在的任务”是什么意思,但是“将数据推送到设备上”是一种令人愉快的小说,在任何情况下都不应该由活动来完成。使用计划的任务(通过AlarmManager)来更新数据,以实现最大的可靠性。


  我们的用户登录后无法执行
  他们每次接到电话
  然后Android决定终止该应用。


有很多iPhone和Android应用程序都可以解决这个问题。通常是因为它们保留登录凭据,而不是强迫用户每次手动登录。


  例如,我们要检查更新
  退出应用程序时


在任何操作系统上,这都是一个错误。据您所知,您的应用程序“退出”的原因是因为操作系统正在关闭,然后您的更新过程中途会失败。通常,这不是一件好事。要么在启动时检查更新,要么完全异步地检查更新(例如,通过计划任务),而不是退出。


  一些评论表明,
  后退按钮不会终止该应用程序
  全部(请参阅上面我的问题中的链接)。


按下“返回”按钮不会“杀死应用程序”。当用户按下“返回”按钮时,它将完成屏幕上的活动。


  它仅应在
  用户想要终止它-从不
  任何其他方式。如果你不会写
  在Android中表现类似的应用,
  那我认为Android无法使用
  用于编写真实的应用程序=(


然后,Web应用程序也不能。或WebOS,如果我正确理解了他们的模型(还没有机会玩过)。在所有这些中,用户不会“终止”任何东西-他们只是离开。 iPhone有点不同,它目前仅允许一次运行一次(有一些例外情况),因此离开的行为意味着该应用程序将立即终止。


  有没有办法让我真正戒烟
  应用程序?


正如其他人告诉您的那样,用户(通过BACK)或您的代码(通过finish())可以关闭您当前正在运行的活动。对于编写正确的应用程序,用户通常不需要使用“退出”选项来使用Web应用程序。



根据定义,没有两个应用程序环境是相同的。这意味着您可以看到随着新环境的出现和其他环境被掩埋而引起的环境趋势。

例如,试图消除“文件”概念的运动正在增加。大多数Web应用程序都不强迫用户考虑文件。 iPhone应用程序通常不会强迫用户考虑文件。 Android应用程序通常不会强迫用户考虑文件。等等。

同样,有越来越多的人试图消除“终止”应用程序的概念。大多数Web应用程序并不强迫用户注销,而是在一段时间不活动之后隐式注销用户。与Android相同,在较小程度上与iPhone(可能还有WebOS)相同。

这就需要更加强调应用程序设计,关注业务目标,而不是坚持与先前的应用程序环境绑定的实现模型。缺乏时间或意愿去做的开发人员将对破坏他们现有思维模型的新环境感到沮丧。这不是这两种环境的错,更不是因为风暴绕过山而不是通过山而造成的故障。

例如,某些开发环境(例如Hypercard和Smalltalk)将应用程序和开发工具混合在一个设置中。除了应用程序的语言扩展(例如VBAExcel中的Lisp in AutoCAD)之外,此概念还没有引起太大的关注。因此,想出了心理模型的开发人员认为应用程序本身中存在开发工具,因此他们要么必须更改其模型,要么将自己限制在其模型可以实现的环境中。

因此,当您编写:


  和其他杂乱的事情
  发现,我认为发展
  我们针对Android的应用不会
  发生。


目前看来,这对您来说是最好的。同样,我建议您不要尝试将应用程序移植到Web上,因为您在Android应用程序中也发现了一些相同的问题(例如,没有“终止”)。相反,或者相反,有一天,如果您确实将应用程序移植到Web上,则可能会发现Web应用程序的流程可能更适合Android,并且可以在那时重新访问Android端口。

关于android - 退出应用程序会感到烦恼吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19080811/

相关文章:

android - 选择表的主键的最佳做法是什么

java - 共享首选项不起作用

android - 为什么 Activity 中的 getApplicationContext().setTheme() 不起作用?

android - 如何延长由 ref.resetPassword() 生成的密码的生命周期?

android - Android 可以与不运行 Java 的 PC 通话吗?

android - 如何修复模拟器 : qemu-system-x86_64: warning: host doesn't support requested feature: CPUID. 80000001H :ECX. abm [位 5]

java - android - android studio 模拟器中的 SSL 问题,在手机上工作正常

android - 如果我启动 Firebase 跟踪并且永远不会停止它?它会在 Android 上引起问题吗?

android - 无法创建在 Android 上水平查看的 AlertDialog

java - android和php之间的非对称加密