在后台运行应用程序
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(在您提出问题后出现)介绍了如何拥有程序、服务以及让它们相互交互。
【讨论】:
以上是关于在后台运行应用程序的主要内容,如果未能解决你的问题,请参考以下文章