【问题标题】:How do I finish an activity in this instance?在这种情况下,我该如何完成一项活动?
【发布时间】:2010-08-16 17:40:32
【问题描述】:

我们都知道,点击设备上的后退按钮不会杀死应用程序,它只会结束(破坏)在前台运行的活动。

好吧,我遇到了一些代码,它们可以帮助我捕获后退按钮信号,这样我就无法退出应用程序。在这种情况下,退出它的唯一方法是按 Home 键。

现在这种情况给我带来了一个独特的劣势!无法在我自己选择的时间kill完成应用程序允许应用程序继续在后台运行,就像没有任何改变一样。

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

PS:如果我对按下主页按钮时发生的事情的理解存在缺陷,我很乐意得到纠正...... =)

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    没有办法用标准按钮杀死应用程序,无论是后退按钮还是主页按钮。如果您的应用程序不是服务并被发送到后台,您的应用程序将被暂停,并且看起来它正在占用内存,但如果应用程序没有运行该应用程序的任务,则完全没问题,并且不会使用所需的任何资源其他过程。

    作为开发人员,请确保您没有更改后退按钮的行为,并且在活动的 onPause 方法中取消注册所有侦听器。如果它在后台,这将阻止您的应用程序消耗电池和处理能力。如果您需要后台进程,请将其作为服务启动,并让用户可以禁用它。

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

    【讨论】:

    • 感谢您的回复。我并不是说我想杀死该应用程序。更像是打算调用完成过程。但是,当我更改后退按钮的用途时,在这种情况下,调用主页按钮时不会调用完成。所以我想我从你的代码中得到了我需要的东西,以了解即使后退按钮被禁用,应用程序也不会占用资源!谢谢...
    【解决方案2】:

    如果您想在用户每次点击主页并重新启动您的应用程序时完成您的应用程序,您可以在您的清单 android:finishOnTaskLaunch="true" 中指定此属性。然而,Android 不允许我们通过代码杀死应用程序,因此不推荐。

    【讨论】:

    • 实际上android确实允许我们通过代码杀死我们。它称为 killBackgroundProcess()。查一下。它几乎杀死了在内核级别运行的进程。您可以通过运行 adb shell 和 top 来验证。感谢您的回复..
    • 首先,该特定方法支持 API 级别 8(即 SDK 2.2)。因此,您将无法在运行较低 SDK 版本的设备中执行相同操作。截至目前,运行 2.2 SDK 的设备只有 4.5%(根据谷歌)虽然我没有使用它,但我不确定它是否会杀死你的整个应用程序,或者会杀死/重新启动你的后台进程。 groups.google.com/group/android-developers/browse_thread/thread/…stackoverflow.com/questions/2877140/…
    猜你喜欢
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 2012-12-16
    相关资源
    最近更新 更多