【问题标题】:How to force an application to stay open?如何强制应用程序保持打开状态?
【发布时间】:2013-04-01 20:22:46
【问题描述】:

我看到 Lookout、JuiceDefender 和 MagicJack 等应用程序无限期地在后台运行,除非用户直接通过任务管理器强制关闭。 (即使那样,在 Gingerbread 中,它也不会关闭,除非您浏览到在设置中的“已下载应用程序”下运行的应用程序,并在您进入可以管理应用程序的选项菜单时强制关闭它,例如“清除内存”和“强制关闭”。

我想知道这是如何实现的?我需要为我的应用程序做类似的事情,但我不知道如何避免 Android 操作系统的自动任务终止。不要说这是不可能的,因为如果这是真的,JuiceDefender、MagicJack 和 Lookout 不会工作。

【问题讨论】:

  • 你最好有一个很好的理由。有充分的理由我的意思是“如果不发生这种情况,小猫就会死”之类的理由。我讨厌那些夺走我自己设备控制权的应用程序。

标签: java android memory


【解决方案1】:

您可以拥有的是一项可以无限期保持活力的服务。您可以在 Service 的 onStartCommand 方法上实现返回 Service.START_STICKY。

每当操作系统需要资源并选择终止您的应用时,只要资源再次可用,您的服务就会重新生成。

请记住,拥有持续运行的应用程序会导致手机电池消耗。您应该(至少)通知用户您的应用在后台仍处于活动状态。

最重要的是,您可以register a broadcast receiver 用于 BOOT_COMPLETED 事件,以便在设备重新启动时重新启动您的服务。但是,请记住,这可能会导致消耗手机电池,因此请注意您在服务中所做的事情。

【讨论】:

    【解决方案2】:

    我相信这些应用会在它们的 Activity 启动时(即调用 onCreate() 时)启动 Service

    当应用程序暂停时,Service 会继续运行。当Service 启动时,您可以在onStartCommand 中返回START_STICKY

    此外,为了防止服务被 Android 的内存杀手杀死,您可以通过调用 startForeground() 来指定您的服务对用户很重要。 Android 开发者网站声明:

    前台服务是被认为是某种东西的服务 用户是主动意识到的,因此不是系统的候选者 在内存不足时杀死。

    【讨论】:

      【解决方案3】:

      我正在创建一个应用程序,我必须在 OnCreate() 中使用以下一个或多个超级函数:

      onDestroy()
      onPause()
      onResume()
      onSaveInstanceState()
      

      从内存中完全关闭应用程序。并且也不要使用 Activity.finish() 方法。通常,Android 在需要内存时关闭应用程序做得很好,称为弹出堆栈,不建议强行留在内存中,除非有非常非常好的理由。希望能帮助到你。 您还可以查看 Android DOC 网站,了解更多信息和您请求的示例。

      【讨论】:

        【解决方案4】:

        您需要启动一个服务。服务在后台运行,对推送警报很有用。 这是一些关于它的链接:

        http://developer.android.com/guide/components/services.html http://www.vogella.com/articles/AndroidServices/article.html

        【讨论】:

          【解决方案5】:

          在服务的 onStartCommand 方法中返回“START_STICKY”。

          http://developer.android.com/guide/components/services.html

          /托马斯

          【讨论】:

            猜你喜欢
            • 2013-01-27
            • 1970-01-01
            • 1970-01-01
            • 2015-09-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-04-07
            • 2012-07-03
            相关资源
            最近更新 更多