【发布时间】:2013-08-14 19:52:11
【问题描述】:
我真的需要能够在单击菜单按钮时终止应用程序。 我的菜单工作正常,但是当我尝试终止/终止应用程序时,它只会关闭当前活动并打开前一个活动。
- 我需要能够使用后退按钮或我设计的导航按钮在应用中的活动之间来回导航
-
在菜单中,我添加了一个退出应用的按钮,在点击事件中,我输入了代码
android.os.Process.killProcess(android.os.Process.myPid())
但是什么也没发生,我的意思是它是一样的。行为类似于 Finish()。单击该按钮时,我需要完成所有活动。
- 我非常讨厌后退按钮,当您深入应用程序并导航几分钟,然后当您想要关闭应用程序时...不点击主页按钮,它需要您可以用几乎相同的时间返回之前执行的所有步骤,反过来……至少可以说很烦人。
- 另外,我的应用程序对几乎每个 Activity 都发出 HTTP 请求 onCreate,因此我的应用程序在“返回”时会产生双倍的互联网流量。 “是”我的应用程序需要这样做。我无法在本地缓存我的数据库并从这里使用它,因为我的应用程序将被多个用户同时使用,并且他们每次进入 Activity 时都需要查看更新的数据
- 我不希望/不需要我的应用保持打开状态以供将来使用。我的应用程序将需要用户+通行证身份验证,并且我需要提供在用户想要注销它时能够关闭它的安全性,这样他就可以在去上厕所时将手机安全地放在桌子上(这只是一个示例)。
- 我不需要关于为什么 Android 不希望我关闭我的应用程序的讲座...我不关心 Android 希望我做什么。 我想做的事更重要。如果我的用户无人看管他的手机,任何人都可以启动应用程序并登录并查看我的应用程序存储的任何信息,所以不,我不希望我的应用程序逗留。当用户选择停止它时,我希望它STOPPED。
那么请告诉我该怎么做? 我尝试在清单中添加:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
对于每个活动,然后在我开始活动时添加:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
什么都没有改变...当我单击退出按钮时,当前活动完成并显示先前的活动。我讨厌这个。 请告诉我该怎么做。
有很多 TaskManager 应用程序可以让您完成其他应用程序,因此必须有一种方法能够完成您自己的应用程序...
谢谢
【问题讨论】:
-
你可以尖叫/加粗所有你想要的关于你如何不关心某些事情的句子,但最终你为了“安全”而试图编造自己的规则。最好的方法是让您的应用程序按预期运行。不要制定自己的“规则”,然后抱怨它并不像应有的那么容易。如果您希望用户能够注销,为什么不添加一个“注销”按钮?或者超时后注销,失去焦点(按下主页按钮)等? (所以保持一个“状态”而不是作为你的基础运行/关闭)
-
最好的办法是使用 startActivityForResult 而不是 startActivity 来启动你的下一个 Activity。我的意思是,如果您当前处于活动 A 并开始活动 B,则使用 startActivityForResult。然后当活动 B 是完成()。然后在 Activity A 的 onActivityResult 方法中,你可以传递一个唯一的请求代码来识别 Activity B 已经调用了 finish() 并希望应用程序退出。然后就可以调用Activity A的finish()方法了。
-
@ArshadParwez 不,这不是最好的主意。最好的主意是不要强制活动退出。无论如何
finish()不会退出 Activity,它会告诉 Android 不再需要这个 Activity。 -
@m0skit0 :我已经实现了我在上面评论的相同的东西,以退出我的应用程序并且它工作正常。此外 this.finish() 是结束 Activity 的正确方法,它不会强制 Activity 退出。相反,它的 System.exit(0) 会强制 Activity 退出。
-
我没有说它不起作用。我说这不是最好的主意。我的意思是
finish()并没有真正退出Activity。何时销毁Activity取决于 Android,因此即使您看不到Activity实例,它也可能仍然存在,潜在的攻击者可以利用它从该实例中恢复数据。System#exit和Activity#finish做了两件完全不同的事情:第一个退出 JVM(它会终止进程并因此退出应用程序),而第二个将 Activity 标记为不需要(不必退出进程)。
标签: android