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

Python Kivy:错误弱引用对象(在时钟函数中)不再存在,python,android,garbage-collection,kivy,weak-references,Python,Android,Garbage Collection,Kivy,Weak References,这是我的错误代码 我想这是一个很难的错误,我在论坛上查看了一下,但没有发现 而且。。。当我使用buildozer进行构建时,手机上出现了错误,但在我的电脑Ubuntu18.0.4和Windows10上没有 据我所知,这个错误来自垃圾收集器,它删除了一个引用,而代码试图在垃圾收集器之后访问该引用。但是我不确定我是否理解垃圾收集器的事情 我尝试的是: 创建强引用,以便gc不会使用以下内容删除它: 在我的文件中 强烈推荐: -使用ErrorHandler来处理错误,但错误会一直出现 我认为是什么导致了

这是我的错误代码 我想这是一个很难的错误,我在论坛上查看了一下,但没有发现

而且。。。当我使用buildozer进行构建时,手机上出现了错误,但在我的电脑Ubuntu18.0.4和Windows10上没有 据我所知,这个错误来自垃圾收集器,它删除了一个引用,而代码试图在垃圾收集器之后访问该引用。但是我不确定我是否理解垃圾收集器的事情

我尝试的是:

创建强引用,以便gc不会使用以下内容删除它: 在我的文件中

强烈推荐: -使用ErrorHandler来处理错误,但错误会一直出现

我认为是什么导致了错误,但我不知道如何修复它:

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

C=Clock.schedule\u intervalself.requestClient,5

此信息位于:

重要的

回调是弱引用的:您负责保持 对原始对象/回调的引用。如果你不保持沉默 引用,时钟库将永远不会执行您的回调

错误:

[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", line 747, in mainloop
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", line 479, in _mainloop
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/base.py", line 339, in idle
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/clock.py", line 591, in tick
05-07 11:27:45.694  2788  2823 I python  :   File "kivy/_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events
05-07 11:27:45.694  2788  2823 I python  :   File "kivy/_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events
05-07 11:27:45.694  2788  2823 I python  :   File "kivy/_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events
05-07 11:27:45.694  2788  2823 I python  :   File "kivy/_clock.pyx", line 154, in kivy._clock.ClockEvent.tick
05-07 11:27:45.694  2788  2823 I python  :   File "kivy/_clock.pyx", line 86, in kivy._clock.ClockEvent.get_callback
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/weakmethod.py", line 56, in is_dead
05-07 11:27:45.694  2788  2823 I python  : ReferenceError: weakly-referenced object no longer exists

谢谢你的阅读

我通常会在根规则的kv部分添加my_object:my_object.\uu self_uu行,以保留对my_object的引用


由于您没有提供任何代码,我无法更具体地…

我通常做的是保留对例如my_对象的引用,以添加my_对象:my_对象。u self_u行在我的根规则的kv部分


由于您没有提供任何代码,我不能更具体地说…

官方文档说要在KV代码中添加“强”引用,如id\u name:id\u name.\uu self\uuuuuuuuuuuu,但不清楚这在哪里是必要的。更重要的是,它并没有解决ReferenceError:弱引用对象对我来说不再存在错误

通过将其添加到Buildozer.spec文件的requirements行,可以强制Buildozer使用特定版本的hostpython3:

python3==3.7.5, hostpython3==3.7.5
还有一点需要注意的是:在将上述内容添加到需求中之后,我回去删除了所有我的自我引用,它仍然运行良好,因此显然在Kivy KV语言中不再需要这些内容

这要归功于我们


更新2020-05-19:Kivy 2.0中的这个错误。

官方文件说要在KV代码中添加“强”引用,如id\u name:id\u name.\uu self\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。更重要的是,它并没有解决ReferenceError:弱引用对象对我来说不再存在错误

通过将其添加到Buildozer.spec文件的requirements行,可以强制Buildozer使用特定版本的hostpython3:

python3==3.7.5, hostpython3==3.7.5
还有一点需要注意的是:在将上述内容添加到需求中之后,我回去删除了所有我的自我引用,它仍然运行良好,因此显然在Kivy KV语言中不再需要这些内容

这要归功于我们


更新2020-05-19:Kivy 2.0中的这个bug。

Hi,我按照你说的做了,但没有在屏幕的根对象中,这有关系吗?我真的不能显示我的代码,很抱歉that@Biloba这可能很重要,但我说不出。。你可以试着发布一个..嗨,我做了你说的,但不是在屏幕的根对象中,这有关系吗?我真的不能显示我的代码,很抱歉that@Biloba这可能很重要,但我说不出。。你可以试着发布一个。。
python3==3.7.5, hostpython3==3.7.5