退出应用程序会让人不悦吗?

2023-12-06

继续尝试学习 Android,我只是阅读以下:

问题:用户是否可以选择终止应用程序 除非我们添加一个菜单选项来杀死它?如果不存在这样的选项, 用户如何终止应用程序?

答案:(Romain Guy):用户不这样做,系统会自动处理此问题。这就是 Activity 生命周期(尤其是 onPause/onStop/onDestroy)的用途。无论您做什么,都不要放置“退出”或“退出”应用程序按钮。它对于Android的应用程序模型来说是没有用的。这也与核心应用程序的工作方式相反。

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

显然,你无法退出 Android 中的应用程序(但 Android 系统很可能在任何需要的时候完全摧毁你的应用程序)。那是怎么回事?我开始认为编写一个充当“普通应用程序”的应用程序是不可能的——用户可以在他/她决定退出时退出该应用程序。这不应该依赖操作系统来做。

我尝试创建的应用程序不是 Android Market 的应用程序。它不是一个供大众“广泛使用”的应用程序,而是一个将在非常狭窄的商业领域使用的商业应用程序。

我实际上非常期待为 Android 平台进行开发,因为它解决了 Windows Mobile 和 .NET 中存在的许多问题。然而,上周对我来说有点令人沮丧……我希望我不必放弃 Android,但它现在看起来不太好 =(

我有办法吗really退出应用程序?


这最终将解决您的问题,但我首先想解决您在撰写本文时已给出的各种答案的各种评论中提出的一些问题。我无意改变你的想法——相反,这些是为将来阅读这篇文章的其他人准备的。

关键是我不能允许 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 移植。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

退出应用程序会让人不悦吗? 的相关文章

  • 找不到参数的方法 dependencyResolutionManagement()

    我正在尝试使用老师给我的一个项目 但它显示了一个错误 Settings file Users admin AndroidStudioProjects HTTPNetworking settings gradle line 1 A probl
  • 在包“android”中找不到属性“backgroundTint”的资源标识符

    我发现了一些视图 xml 属性 例如backgroundTint backgroundTintMode 但是当我使用它作为视图属性定义时 Eclipse 显示错误 No resource identifier found for attri
  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • 使用不同的.Net 语言?

    是否有不同受欢迎程度的细分 Net 语言可用的 有谁知道任何提供此信息的调查 或者即使有可能确定这一点 Update 答案是not不同 Net 语言的列表 我希望看到显示每种 Net 语言的相对使用 流行程度的统计数据 谢谢 如果你像我一样
  • 访问受 Cloudflare 保护的网页

    首先 我想道歉 以防我的问题可能无法提供足够的连接或任何其他问题 我现在正在手机上输入此内容 因此 我正在开发一个项目 需要我在网页中自动执行任务 为了做到这一点 第一步是首先访问该页面 但我遇到了一个障碍 我尝试过搜索和想通了也无济于事
  • 如何使用 C# 迭代和统计 Word 文档中的修订次数?

    我一直在寻找这个问题 但找不到任何答案 所以希望这里的人可以提供帮助 我正在用 C 编写一个 WinForms 应用程序 其中我使用 Word Application Compare Documents 来比较两个文档并获取一个结果文档 其
  • shouldAutorotate To InterfaceOrientation:从未调用过

    我在 部署信息 下将支持的界面方向设置为除纵向倒置之外的所有方向 我想重写 shouldAutorotateToInterfaceOrientation 以实现自定义行为 即根据条件支持景观 由于限制 自定义视图转换 我只有一个视图控制器
  • 如何使用 AVAudioPlayer 在 iPhone sdk 中暂停和恢复同一首歌曲

    我想暂停这首歌 然后在 iPhone 中使用编程方式从该持续时间点继续播放 当我尝试暂停歌曲并再次开始播放我暂停的歌曲时 如何对其进行编码 是否有任何直接属性或建议任何代码可以解决我的问题 void playMusic path NSBun
  • 如何使用 Nuxt 2 转译 node_modules 中的依赖项?

    我读过有关转译的问题node modulesNuxt 但据说新的 Nuxt 2 已经解决了这个问题transpile选项中的nuxt config js file https nuxtjs org api configuration bui
  • 从 Beam 管道连接 google cloud sql postgres 实例

    我想从在谷歌数据流上运行的 apache beam 管道连接谷歌云 sql postgres 实例 我想使用 Python SDK 来完成此操作 我无法为此找到适当的文档 在云SQL如何指导我没有看到任何数据流文档 https cloud
  • Xcode 4.5 中的当前位置错误

    在 Xcode 4 5 中 苹果引入了苹果新地图 我的应用程序大量需要地图服务 我注意到在我的应用程序中它显示了错误的当前位置 直到您删除应用程序并重新打开它才显示正确的当前位置 有时不会 顺便提一下 当我连接到 4G 时 它显示的当前位置
  • javax.el.PropertyNotWritableException:value =“”:设置操作的非法语法[重复]

    这个问题在这里已经有答案了 我有这个表格
  • Javascript:检查两个div之间的碰撞

    有什么方法可以检查名称为 character 的 DIV 是否与名称为 ground 的 DIV 重叠 我想用干净的 Javascript 来做到这一点 我知道 jQuery 更好 但这就是我不想要的 我看到了这个帖子 检查某些div之间的
  • Solr:在数据导入期间转换逗号分隔字段

    我正在使用 Solr 3 5 0 我正在从 JDBC 数据源导入 并且有一个分隔字段 我希望将其拆分为各个值 我正在使用RegexTransformer但我的领域没有被分割 样本值 Bob Carol Ted Alice 数据配置 xml
  • 编译并运行动态代码,而不生成EXE?

    我想知道是否可以编译并运行存储的代码 而不生成 exe 或任何类型的其他文件 基本上从内存中运行该文件 基本上 主应用程序将具有一些存储的代码 可能会更改的代码 并且需要编译代码并执行它 无需创建任何文件 创建文件 运行程序 然后删除文件不
  • 实体框架DbContext无需查询并通过外键更新值

    我有一个更新一些表的方法 对于更新我需要首先获得TestProcess 但我不喜欢这样 我怎样才能更新TestProcess没有select firstOrDefault 操作 仅用于更新操作 方法示例 public void Update
  • 如何动态地分块重塑矩阵? [复制]

    这个问题在这里已经有答案了 假设我有A 1 8 11 18 21 28 31 38 41 48 现在我想将所有内容从第 4 列向前移动到行位置 我该如何实现这一目标 A 1 2 3 4 5 6 7 8 11 12 13 14 15 16 1
  • 如何处理“变量时间”(DATE、双精度、8 字节)?

    我似乎找不到任何有关 变体时间 的信息 DATE 双精度 8 字节变量 被处理 我有一个不同的时间 A 哪个值是 41716 892329 如果我转换 A 使用 变体时间到系统时间 or COle日期时间 我明白 2014 03 18 21
  • 移动向量会使迭代器失效吗?

    如果我有一个向量迭代器a 然后我移动构造或移动分配向量b from a 该迭代器是否仍然指向同一个元素 现在在向量中 b 这就是我在代码中的意思 include
  • 如何使用存储过程在sql server 2008中拆分字符串并将数据插入表

    我想以这种格式分割一个字符串 引用 date 10 10 2000 age 13 date 01 01 2001 age 12 date 02 02 2005 age 8 实际上这个字符串只是一个示例 我的原始字符串非常大 我不明白的是 如
  • 在 ASP.NET MVC 2 中 - 如何将路由值获取到导航控制器中,以便突出显示当前链接?

    我正在尝试将当前路线放入导航控制器中 以便在填充导航菜单数据时可以运行比较 我的链接对象是这样的 public class StreamNavLinks public string Text get set public RouteValu
  • Struts2;为 StrutsSpringTestCase JUnit 测试保持会话打开

    我的项目架构是带有 Spring 集成和 JPA Hibernate 的 Struts2 StrutsSpringTestCase 基类用于 JUnit 集成测试 正常情况下 web xml 中的以下配置使单个会话从每个请求的开始到结束保持
  • 退出应用程序会让人不悦吗?

    继续尝试学习 Android 我只是阅读以下 问题 用户是否可以选择终止应用程序 除非我们添加一个菜单选项来杀死它 如果不存在这样的选项 用户如何终止应用程序 答案 Romain Guy 用户不这样做 系统会自动处理此问题 这就是 Acti