2010-08-16 74 views
3

我们都知道,点击设备上的后退按钮不会中止应用程序,它只会完成(销毁)在前台运行的活动。如何在这种情况下完成一项活动?

那么我遇到了一些代码,它可以帮助我捕获后退按钮信号,以便我不能退出应用程序。在这种情况下退出它的唯一方法是按Home键。

现在这种情况给我带来了一个独特的缺点!无法以 杀死 在我自己选择的时间完成应用程序允许应用程序在没有任何变化的情况下继续在后台运行。

那么在这种情况下,任务管理器是我唯一的朋友,还是有一种方法可以让我杀死这个应用程序?

PS:如果在我的时候,家里按下按钮会发生什么悟性上的瑕疵,我很想得到纠正...... =)

回答

3

没有办法用标准按钮杀死后退按钮或主页按钮。如果应用程序不是服务并且发送到后台,并且看起来它正在耗尽内存,但是如果应用程序没有运行该应用程序的任务,则该应用程序将暂停,并且不会使用任何需要的资源其他进程。

作为开发人员,请确保您不会更改后退按钮的行为,并且您注销了活动的onPause方法中的所有侦听器。这会阻止您的应用程序在后台使用电池和处理能力。如果您需要后台进程,请将其作为服务启动,并为用户提供禁用的可能性。

此生命周期行为与您在普通机器上习惯的行为不同。但是,如果应用程序写得或多或少正确,它应该更适合使用移动设备。您应该至少阅读Android博客上的multi threading the android way,也可能是When to include an exit button。这将使您更好地了解Android上关于多点触摸和退出应用程序的预期可用性模式。

+0

感谢您的回复。我不是故意要杀死应用程序。更像是打算完成程序被调用。但是当我改变后退按钮的用途时,在这种情况下,当主页按钮被调用时,结束将不会被调用。所以我想我从你的代码中得到了我所需要的,以便了解即使后退按钮被禁用,应用程序也不会占用资源!谢谢... – Shouvik 2010-08-16 09:35:05

3

如果你想每次来完成您的应用程序时,用户点击回家并重新启动您的应用程序,您可以在您的Manifest中指定此属性。android:finishOnTaskLaunch =“true”。然而,Android不允许我们通过代码杀死一个应用程序,不推荐。

+0

实际上,android确实允许我们通过代码杀死我们。它叫做killBackgroundProcess()。看看它。它几乎杀死了在内核级别运行的进程。您可以通过运行adb shell和top进行验证。感谢您的回复。 – Shouvik 2010-08-16 09:37:20

+0

首先,该特定方法支持API Level 8(意味着SDK 2.2)。因此,您无法在运行较低SDK版本的设备中执行此操作。截至目前运行2.2 SDK的设备只有4.5%(按照谷歌)虽然我没有使用它,但我不确定它是否会杀死整个应用程序,或者会终止/重新启动后台进程。 http://groups.google.com/group/android-developers/browse_thread/thread/6a544bfd05bf10cf http://stackoverflow.com/questions/2877140/android-2-2-deprecates-restartpackage-but-adds - 另一种头痛 – DeRagan 2010-08-16 10:05:54