【问题标题】:Kivy not calling on_stop() function after closing app from recent apps list in android从 android 中最近的应用程序列表中关闭应用程序后,Kivy 没有调用 on_stop() 函数
【发布时间】:2020-09-17 06:49:59
【问题描述】:

我为 Android 创建了一个 kivy 应用程序。我已经实现了 on_start(),on_stop(),on_pause(),on_resume() 函数,如下所示。

class Myapp(MDApp):
    def build(self):
        ....

    on_start(self):
        pass
    on_stop(self):
        print("stopped")
    on_pause(self):
        print("paused")
        return True
    on_resume(self):
        print("resumes")

当我最小化应用程序的 on_pause() 函数并暂停打印并恢复时,应用程序的 on_resume() 函数被调用并恢复打印。现在的问题是,当我们的应用程序被最小化然后从最近的应用程序列表中关闭时,它应该调用 on_stop() 函数并且我们的应用程序应该停止并停止打印。但即使从最近的应用列表中删除应用后,on_stop() 也不会被调用,我们的应用也没有关闭,它仍然处于暂停状态。 如果我在 on_pause() 中返回 False 而不是 returnig True,则每当我最小化应用程序或直接关闭应用程序时都会调用 on_stop()。我希望在最小化应用程序时调用 on_pause() 并在从最近列表中删除应用程序时调用 on_stop()。

现在,当我从最近的列表中关闭应用程序时,它仍然处于暂停状态,并且不会调用 on_stop()。 我希望在从最近列表中删除应用程序时调用 on_stop() 。我该如何做到这一点??

【问题讨论】:

标签: python android kivy kivy-language kivymd


【解决方案1】:

我认为您无法做到这一点,当您的应用以这种方式被删除时,它可能会被 Android 简单地杀死,无法保证(或者我认为期望)您的应用会通过任何事件。

如果这对您很重要,您应该在您的on_pause 中假设该应用永远不会恢复。

【讨论】:

  • 当我暂停应用程序时,数据库不应断开连接,并且在恢复应用程序时它应该继续使用相同的连接。但只有当应用程序从最近的应用程序列表中清除时,我才希望数据库断开连接。我如何做到这一点?
  • 最简单的解决方案是更改您的要求,您不能保证获得 on_stop 事件这一事实没有什么不合理的,并且很自然地可以解决这个问题。更一般地说,您可以在应用暂停时使用后台服务继续运行代码,但实际上这可能有缺点(例如您的用户不喜欢看到服务通知),甚至可能会出现相同的问题,即在它被杀死了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多