我们都知道生命周期Activity
,它是构成 Android 应用程序(至少是 UI)的基本构建块。
我们也知道Activity
轴本身可以破坏什么,这取决于负载/内存可用性等。情况。
有这样的应用程序(例如,网上银行应用程序)需要授权/登录,在这种情况下,通过与普通桌面应用程序类比,选项/按钮/操作会自动提示 -退出/退出/退出,点击它会导致保证关闭应用程序。例如,著名的 Sberbank Online 移动应用程序中就使用了这种模式。
另一个稍微不太知名的 Tinkoff Bank 移动应用程序没有使用这样的模板(或者更确切地说,你可以通过这种方式退出应用程序,但它隐藏得相当深),退出应用程序,在这种情况下,是通过系统后退/后退按钮- 当到达后者堆栈的底部时Activity
- 应用程序本身停止工作。
注意,问题是: Android 应用程序使用专门的退出/退出操作是正常的还是反模式?
我相信(严肃的)应用程序的“退出(进入)文化”应该以这样一种方式专门构建,即用户非常清楚,他们担心与他们的资产建立快速简便的关系,何时以及如何应用程序打开、应用程序关闭的时间和方式。使用按钮退出
Назад
银行应用程序会让我产生一些疑虑。实施此类应用程序的程序员可能会考虑到大众用户的心理,或者他们被赋予了考虑这一点(可能还有更多)的任务。
我认为一个专门的应用程序的专门退出/退出是正常的,因此是一种模式。在其他应用程序中,这种模式显然不会被需求,成为一种反模式。
除了 objects 之外
Activity
,还有一个 objectApplication
,根据 OS 的作者的说法,理想情况下,一旦用户启动应用程序,它就应该永远存在。并且没有“合法”的编程方式来销毁这个对象。所以没有我们在电脑上习惯的“退出”这个概念。至于在线银行应用程序和其他使用封闭数据的应用程序,用户应该清楚区分区域(开放/受保护)并在它们之间进行明确的转换。
分别使用 PIN 或登录密码进入保护区,通过确认退出(完成?是或否,或明确的“退出”命令)。
应用程序本身可以保留在内存中甚至屏幕上,主要是删除/撤销所有令牌,关闭会话等。对于标准用户来说,这是足够的安全级别。
如果您的用户非常偏执或要求在内存中留下一些东西等,那么他们在系统上犯了一个错误。虚拟机不提供如此高级别的安全性。在应用程序中没有必要为此烦恼。
随着资源的释放退出应用程序在游戏中是非常需要的。同时,退出并不意味着后台可能需要的所有服务都完成。对于银行应用程序,退出不是从应用程序,而是从密码隐藏机密/财务数据的个人帐户。在其他情况下,杀死一个机器人是一个很好的出路,那里不需要一个单独的按钮。
upd
游戏大部分在启动时加载所有资源并且不再卸载它们。从而避免调用垃圾收集器,同时确保不会因 gc 而产生延迟。个别场景会根据需要加载和卸载(例如关卡)。
由于加载和卸载需要相当长的时间,因此最好再次让用户退出,而不是因为不小心按回了而重新下载所有内容。并且必须有意识地按下菜单中的退出按钮(通过后退按钮或界面中的按钮)。
另一方面也是如此,如果用户玩够了,那么就没有必要在内存中保留数百兆的下载资源,即使在后台考虑一些逻辑,而且还很吃电,那么用户应该能够完全退出游戏 - 在按钮上。
不幸的是,游戏编写者有时会忽略资源的释放,而让服务在后台运行以显示通知、轮询服务器以获取更新和新事件,如果此类服务的内存和处理器(电池)消耗不是很大,那是很好的。 .. 出于同样的原因,各种任务杀手如此受欢迎,等等。
事实上,Android 操作系统本身负责关闭用户使用的应用程序,并参与应用程序生命周期的“维护”。“退出”按钮的使用是模式还是反模式,不可能给出明确的答案。这完全取决于开发人员如何熟练地使用其实现。
在 Material Design 指南中,在可用性 - 可访问性部分,您可以找到信息,应用程序中的导航应该以这样一种方式构建,让用户有信心并了解他在您的应用程序中的位置。在处理对用户重要的信息的应用程序(金融应用程序、处理云中的数据等)中,“退出”按钮不仅意味着关闭应用程序本身,而且还执行某些附加功能(当自动关闭会话时使用手机银行,退出“云端”ETC。)。在这种类型的应用程序中,希望向用户展示他正在某种封闭的、受保护的环境中工作,并增加他对安全的信心。同时,“退出”按钮清楚地显示了受保护环境的边界。它的使用将使应用程序的使用更加安全,使入侵者更难对其进行攻击。
还有另一种使用退出按钮的方法,默认情况下它对用户隐藏,但通过某些设置它会出现在菜单中。这个方法的实现可以在Android 操作系统的Firefox浏览器的例子中看到。同时,除了关闭应用程序本身外,“退出”按钮还执行其他功能(删除用户可配置的数据)。
从第一种和第二种情况都可以看出,“退出”按钮不仅改善了与应用程序的交互,而且还实现了使某些安全功能更易于使用的附加功能。
在后台执行某些功能的应用程序中,使用退出按钮也是合适的。按钮的实现应该清楚地表明,当它被按下时,应用程序会完全关闭用户界面和所有后台进程。
因此,我们可以得出结论,如果“退出”按钮在使用应用程序时增加了用户的信心,促进了某些功能的使用,改进了其中的导航,那么在这种情况下,它在应用程序中的实现可以称为模式。如果“退出”按钮的实现只为用户加载额外的操作,而不引入任何额外的负载,那么这样的实现可以称为反模式。
在复杂的应用程序中,作为用户,我希望看到用于注销我的帐户和用于注销应用程序的按钮。第二个应该像在 Viber 应用程序中一样工作:关闭应用程序和后台进程以避免通知,直到它再次启动。另外,我会为所有游戏提供一个类似的“退出”,让你可以通过关闭所有游戏进程并释放内存直接退出游戏。
从文档的内容来看,覆盖后退按钮(以及其他硬件按钮)的默认行为是不礼貌的:
也就是说,绝对不值得让硬件后退按钮具有退出应用程序的能力。:)
至于其他情况......有一种意见认为您不应该强制关闭应用程序,我们甚至没有谈论以编程方式关闭应用程序。这是一篇关于这个主题的有趣文章(一篇关于 iOS 的文章,但在我看来,这也适用于 Andoid)和我的免费翻译:
以及同一篇文章中的一个小插图:
因此,有理由相信以编程方式关闭应用程序更不值得。我不会争辩说这个观点是唯一正确的,但至少它很有趣。
我认为从应用程序的明确退出应该是从可用性的角度来看的,但它是真正的退出,还是进入暂停/后台是另一个问题。也就是说,这取决于应用程序的作用。因为,例如,现在有很多应用程序没有明确的退出,并且由于这样或那样的原因它们在没有它的情况下明显停止工作而不得不强制“退出”。当然,在理想的世界图景中,操作系统自行决定什么是正确的是件好事,但在谷歌将 AI 内置到手机中之前,这是必不可少的。
我认为用户应该能够明确退出应用程序,尤其是在存在严重个人数据的在线应用程序中——这在心理层面上让用户放心,他已经退出并且没有人会拦截他的数据,并且在关闭应用程序之前,执行所有必要的操作以退出帐户、关闭会话等。在我看来,存在一种简单方便的“开箱即用”退出应用程序的方法是谷歌开发人员的缺陷。