小编Bil*_*oba的帖子

Kivy:错误弱引用对象(在时钟函数中)不再存在

所以这是我的错误代码我认为这个错误有一些困难,我查看了论坛但找不到。

而且...我的手机上有错误(使用kivy launcher python 3,当我使用 buildozer 构建时)但我的电脑上没有错误(ubuntu 18.0.4 和 windows 10) 据我了解,错误来自垃圾删除引用的收集器,并且代码尝试在垃圾收集器之后访问该引用。但我不确定我是否真的了解垃圾收集器

我试过的:

  • 进行“强引用”,以便 gc 不会删除它:
    id: id.__self__
Run Code Online (Sandbox Code Playgroud)

在我的 kv 文件中

  • 使用以下方法进行“强引用”:
     self.refs = [
                self.id.__self__,
                self.id.__self__]
Run Code Online (Sandbox Code Playgroud)

- 使用 ErrorHandler 来处理错误,但错误永远出现

我认为导致错误的原因,但我不知道如何解决:

  • 我用来向服务器发送请求的时钟,但我不知道为什么(self.requestClient 是一个发送请求的函数):

    C = Clock.schedule_interval(self.requestClient, 5)

  • kivy 时钟文档中的此信息:

重要的

回调是弱引用:您负责保持对原始对象/回调的引用。如果您不保留引用,则 ClockBase 将永远不会执行您的回调

错误 :

[ERROR  ] Exception catched by ExceptionHandler
05-07 11:27:45.694  2788  2823 I python  : Traceback (most recent call last):
05-07 11:27:45.694  2788  2823 I python  :   File path/kivy-launcher/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/launcher/kivy/core/window/window_sdl2.py", …
Run Code Online (Sandbox Code Playgroud)

python android garbage-collection weak-references kivy

1
推荐指数
1
解决办法
1683
查看次数