Python Kivy:错误弱引用对象(在时钟函数中)不再存在
这是我的错误代码 我想这是一个很难的错误,我在论坛上查看了一下,但没有发现 而且。。。当我使用buildozer进行构建时,手机上出现了错误,但在我的电脑Ubuntu18.0.4和Windows10上没有 据我所知,这个错误来自垃圾收集器,它删除了一个引用,而代码试图在垃圾收集器之后访问该引用。但是我不确定我是否理解垃圾收集器的事情 我尝试的是: 创建强引用,以便gc不会使用以下内容删除它: 在我的文件中 强烈推荐: -使用ErrorHandler来处理错误,但错误会一直出现 我认为是什么导致了错误,但我不知道如何修复它: 我用来向服务器发送请求的时钟,但我不知道self.requestClient为什么是发送请求的函数: C=Clock.schedule\u intervalself.requestClient,5 此信息位于: 重要的 回调是弱引用的:您负责保持 对原始对象/回调的引用。如果你不保持沉默 引用,时钟库将永远不会执行您的回调 错误:Python Kivy:错误弱引用对象(在时钟函数中)不再存在,python,android,garbage-collection,kivy,weak-references,Python,Android,Garbage Collection,Kivy,Weak References,这是我的错误代码 我想这是一个很难的错误,我在论坛上查看了一下,但没有发现 而且。。。当我使用buildozer进行构建时,手机上出现了错误,但在我的电脑Ubuntu18.0.4和Windows10上没有 据我所知,这个错误来自垃圾收集器,它删除了一个引用,而代码试图在垃圾收集器之后访问该引用。但是我不确定我是否理解垃圾收集器的事情 我尝试的是: 创建强引用,以便gc不会使用以下内容删除它: 在我的文件中 强烈推荐: -使用ErrorHandler来处理错误,但错误会一直出现 我认为是什么导致了
[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