在后台运行应用程序

Posted

技术标签:

【中文标题】在后台运行应用程序【英文标题】:Run the application in background 【发布时间】:2014-01-10 05:54:21 【问题描述】:

我正在尝试使用 kivy 构建 android 应用程序。如何隐藏我的应用程序,但仍让它像守护进程一样在后台运行?

from kivy.config import Config
Config.set('graphics', 'fullscreen', 'fake')

from kivy.app import App
from kivy.uix.button import Button

class MyApp(App):
    def build(self):
        button = Button(text="Exit", size_hint=(None, None))
        button.bind(on_press=exit)
        return button

if __name__ == '__main__':
    MyApp().run()

【问题讨论】:

【参考方案1】:

如果您想在后台实际进行计算,则需要使用 android 服务。 Python-for-android 可以做到这一点,相关文档是here (old_toolchain)。新的工具链方法见here。

如果您只是希望您的应用程序不完全关闭(这样它就不会每次都以启动画面等方式完全重新启动),您只需向您的 App 类添加一个 on_pause 方法,然后应该返回True。您还可以在此方法中执行任何暂停前的操作。但是,应用程序并没有真正保持运行,它只是保持内存状态。

在后一种情况下,请注意 android 可以而且有时会杀死处于暂停状态的应用程序。这是应用程序处理方式的正常部分,您无法避免,因此您应该将所有重要状态保存在您的 on_pause 方法中。

【讨论】:

只要使用start_service,我的应用程序将在后台运行而不管它是否关闭? 不,该服务是一个单独的进程,只运行您专门添加的内容。 你能给我一些服务的例子吗?这将帮助我了解更多,因为我不了解如何将我的应用程序提供给服务。我将如何为我的申请启动一个单独的流程? 文档似乎已移至here(我只是不确定“old_toolchain”部分) 感谢@AndrasDeak 我已经编辑了链接到新旧文档的答案。【参考方案2】:

正如 Inclement 已经提到的,您需要为此启动一个 android 服务。 This kivy planet post(在您提出问题后出现)介绍了如何拥有程序、服务以及让它们相互交互。

【讨论】:

以上是关于在后台运行应用程序的主要内容,如果未能解决你的问题,请参考以下文章

linux centos程序后台运行

在后台运行应用程序超过 10 分钟

当android应用程序后台运行时如何在android中隐藏视图(在后台运行时不停止android拍摄快照)[重复]

Cordova:在后台运行应用程序时的事件

我怎么知道我的应用程序在后台运行?

在后台运行应用程序