这最终将解决您的问题,但我首先想解决您在撰写本文时已给出的各种答案的各种评论中提出的一些问题。我无意改变你的想法——相反,这些是为将来阅读这篇文章的其他人准备的。
关键是我不能允许
Android 确定我的应用程序何时运行
即将被终止。那一定是
用户的选择。
数百万人对环境根据需要关闭应用程序的模型非常满意。这些用户根本不会考虑“终止”Android 应用程序,就像他们不会考虑“终止”网页或“终止”恒温器一样。
iPhone 用户的情况大致相同,因为按下 iPhone 按钮并不一定“感觉”应用程序被终止,因为许多 iPhone 应用程序会从用户中断的地方继续,即使应用程序确实被关闭(因为 iPhone 只允许目前一次一个第三方应用程序)。
正如我上面所说,有很多
我的应用程序中发生的事情(数据是
推送到设备,列出任务
应该总是存在的,等等)。
我不知道“列出应该始终存在的任务”是什么意思,但“数据被推送到设备”是一个令人愉快的虚构,在任何情况下都不应该由活动来完成。使用计划任务(通过AlarmManager
)更新您的数据以获得最大的可靠性。
我们的用户登录后无法执行操作
每次他们接到电话时
Android 决定终止该应用程序。
有许多 iPhone 和 Android 应用程序可以处理此问题。通常,这是因为他们保留登录凭据,而不是强迫用户每次都手动登录。
例如,我们要检查更新
退出应用程序时
这在任何操作系统上都是一个错误。据您所知,您的应用程序“退出”的原因是操作系统正在关闭,然后您的更新过程将在中途失败。一般来说,这不是什么好事。要么在启动时检查更新,要么完全异步检查更新(例如,通过计划任务),从不在退出时检查更新。
一些评论建议击中
后退按钮不会终止应用程序
全部(请参阅上面我的问题中的链接)。
按“返回”按钮不会“终止应用程序”。当用户按下“后退”按钮时,它会完成屏幕上的活动。
它应该仅在以下情况下终止:
用户想要终止它 - 永远不会
任何其他方式。如果你不会写
行为类似于 Android 中的应用程序,
然后我觉得安卓不能用
用于编写真正的应用程序 =(
那么 Web 应用程序也不能。或者WebOS,如果我正确理解他们的模型(还没有机会玩一个)。在所有这些中,用户不会“终止”任何东西——他们只是离开。 iPhone 有点不同,因为它目前一次只允许运行一项任务(有少数例外),因此离开的行为意味着应用程序会立即终止。
有没有办法让我真正戒掉
应用程序?
正如其他人告诉你的那样,用户(通过 BACK)或你的代码(通过finish()
) 可以关闭您当前正在运行的活动。对于正确编写的应用程序,用户通常不需要任何其他东西,就像使用 Web 应用程序不需要“退出”选项一样。
根据定义,没有两个应用程序环境是相同的。这意味着您可以看到新环境的出现和其他环境被埋没时的趋势。
例如,越来越多的运动试图消除“文件”的概念。大多数 Web 应用程序不会强迫用户考虑文件。 iPhone 应用程序通常不会强迫用户考虑文件。 Android 应用程序通常不会强迫用户考虑文件。等等。
同样,越来越多的运动试图消除“终止”应用程序的概念。大多数 Web 应用程序不会强制用户注销,而是在一段时间不活动后隐式注销用户。 Android 也是如此,iPhone(可能还有 WebOS)也有同样的情况。
这需要更加重视应用程序设计,关注业务目标,而不是坚持与以前的应用程序环境绑定的实现模型。缺乏时间或意愿的开发人员会对打破他们现有思维模式的新环境感到沮丧。这不是任何一个环境的错,就像暴风雨在山周围流动而不是穿过山一样,这不是山的错。
例如,一些开发环境,例如超级卡和 Smalltalk,将应用程序和开发工具混合在一个设置中。除了应用程序的语言扩展(例如,VBA in Excel, AutoCAD 中的 Lisp)。因此,提出假设应用程序本身存在开发工具的心理模型的开发人员要么必须改变他们的模型,要么将自己限制在模型适用的环境中。
所以,当你写:
连同其他凌乱的事情我
发现,我认为发展
我们的 Android 应用程序不会
发生。
对于现在的你来说,这似乎是最好的。同样,我建议您不要尝试将应用程序移植到 Web,因为您在 Android 上报告的一些相同问题也会在 Web 应用程序中找到(例如,没有“终止”)。或者,相反,有一天,如果你do将您的应用程序移植到 Web 上后,您可能会发现 Web 应用程序的流程可能更适合 Android,届时您可以重新访问 Android 移植。