【发布时间】:2015-07-14 17:56:56
【问题描述】:
我想知道是否有人可以对此有所了解,
我有一个具有列表视图的活动应用程序。在 onCreate() 中,我在该列表视图中填充了一些数据(从 sqlite 数据库中读取)。我有一个触发完成()的关闭按钮;也。现在,当我按下关闭按钮时,活动消失了,但是当我单击桌面上的应用程序图标(或从电话历史记录按钮中选择它)时,我会在列表视图中看到所有以前的数据。我正在寻找的功能是在单击关闭按钮以进行下次运行后重新启动应用程序。 (类似于银行应用程序注销按钮)。 (这里的列表视图只是一个满足需求的示例,因此在完成()之前清除列表视图是不可接受的。这是非常简单明了的请求,我认为不需要任何代码,但如果有人感兴趣,我会也贴一些代码。
我想要的是与退出时的银行应用程序相同的行为,当用户离开主屏幕或单击退出时,应用程序会完全关闭。我可以通过使用以下方法(数字 2 和 3)来实现这一点,但显然这些解决方案不是最佳实践。那么银行App用什么方法来瞬间关闭应用呢?我怀疑他们使用的不是最佳实践,例如 System.exit(0)?!还是他们!
许多开发者声称关闭应用程序或杀死父活动 是操作系统工作
-
有人说用用:
int pid = android.as.Process.myPid();
android.os.Process.killProcess(pid);
(根据这个解决方案不是一个好主意,因为在下一次运行应用程序的行为就像它上次崩溃了https://stackoverflow.com/a/24015569/4173238)
有人说使用 System.exit(0);根据这个 也不推荐https://stackoverflow.com/a/5846275/4173238
有人说使用finish();但是完成并没有做我想要的
感谢您的任何意见
【问题讨论】:
-
如果你在那个按钮上重新排列你的活动堆栈,点击删除所有活动并转到主要活动,然后调用finish()。也许使用 FLAG_ACTIVITY_CLEAR_TOP。
-
“那么银行应用程序使用什么方法通过单击立即终止应用程序?” --首先,请用精确的技术术语解释“终止应用程序”的含义。然后,请用精确的技术术语解释您是如何确定“银行应用程序”会“终止应用程序”的。
-
“应用程序不会回到之前关闭活动的状态”——
finish()就是这样做的。 “finish() 没有为我做同样的工作”——那么你需要详细解释什么是“同样的工作”以及finish()没有做什么。您可能还想解释“用户离开主屏幕”的含义。 “我希望你明白,这里的每个人的 android 知识水平都不是一样的”——我希望你明白,你必须提供 a minimal, complete, and verifiable example 什么不适合你。 -
“当我再次点击应用程序图标时,我会在列表视图中看到所有以前的数据”——如果您调用了
finish(),那么当您“点击应用程序”时,您正在查看一个新的活动实例再次图标”。这意味着无论“所有以前的数据”来自何处,它都超出了活动的范围,例如在静态数据成员中。您将需要确定这些数据的来源,并在您不想使用时采取措施不使用这些数据。
标签: android android-activity activity-finish