Python服务前景可以打开应用程序,而是卡在黑屏上

发布于 2025-01-22 21:21:23 字数 2238 浏览 0 评论 0 原文

其中生成了问题:

from kivy.lang import Builder
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.widget import Widget 
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

Builder.load_file('the.kv')

def start_service():
    from kivy import platform
    if platform == "android":
        from android import mActivity
        from jnius import autoclass
        service = autoclass("org.pck.my_app.ServiceMyservice_5")   
        mActivity = autoclass("org.kivy.android.PythonActivity").mActivity
        service.start(mActivity, "")
        print('starting service')

start_service()

class fscreen(Widget):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

class theapp(App):
    def build(self):

        self.screenm = ScreenManager() 

        self.fscreen = fscreen()
        screen = Screen(name = "first screen")
        screen.add_widget(self.fscreen)
        self.screenm.add_widget(screen)

        return self.screenm

theapp().run()  

,我有此服务。

import time
from jnius import autoclass
from plyer import notification

PythonService = autoclass('org.kivy.android.PythonService')
PythonService.mService.setAutoRestartService(True)

cnt = 0
while True:
    time.sleep(1)
    cnt += 1
    print('service has been running for ' + str(cnt))

大家好,我有一个最小的代码,在 强>

<fscreen>
    Label:
        text: 'Test for Service'
        font_size: root.height*0.05
        pos: root.width*0.3, root.height*0.5
        size: root.width*0.4, root.height*0.1

在buildozer部署后的此屏幕:

”在此处输入图像描述”

并且这是顶部幻灯片的前景的屏幕:

“在此处输入图像说明”

和最后一个黑屏幕:

Hello guys i have this minimal code where the issue is generated:

from kivy.lang import Builder
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.widget import Widget 
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

Builder.load_file('the.kv')

def start_service():
    from kivy import platform
    if platform == "android":
        from android import mActivity
        from jnius import autoclass
        service = autoclass("org.pck.my_app.ServiceMyservice_5")   
        mActivity = autoclass("org.kivy.android.PythonActivity").mActivity
        service.start(mActivity, "")
        print('starting service')

start_service()

class fscreen(Widget):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

class theapp(App):
    def build(self):

        self.screenm = ScreenManager() 

        self.fscreen = fscreen()
        screen = Screen(name = "first screen")
        screen.add_widget(self.fscreen)
        self.screenm.add_widget(screen)

        return self.screenm

theapp().run()  

And i have this service.py:

import time
from jnius import autoclass
from plyer import notification

PythonService = autoclass('org.kivy.android.PythonService')
PythonService.mService.setAutoRestartService(True)

cnt = 0
while True:
    time.sleep(1)
    cnt += 1
    print('service has been running for ' + str(cnt))

And a small widget in the.kv file:

<fscreen>
    Label:
        text: 'Test for Service'
        font_size: root.height*0.05
        pos: root.width*0.3, root.height*0.5
        size: root.width*0.4, root.height*0.1

this a screen after the buildozer deploy:

enter image description here

and this a screen for the foreground from top slide:

enter image description here

and last a black screen:

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可爱暴击 2025-01-29 21:21:24

请参阅此处:

尝试删除“ start_service()”,然后在“ class theapp(app)下添加下面的代码:”

def on_start(self):
    from kivy import platform
    if platform == "android":
        self.start_service()

并根据您在main.py中的命名,请记住要确保修改bulldozer.spec中的某些项目。如下:

# (str) Package name
package.name = my_app

# (str) Package domain (needed for android/ios packaging)
package.domain = org.pck

# add pyjnius to requirements
requirements = pyjunius

# add to service
services = Myservice_5:service.py

reference here: https://www.youtube.com/watch?v=DSMzCsnocn0&t=34s

try remove "start_service()" ,and add below code under "class theapp(App):"

def on_start(self):
    from kivy import platform
    if platform == "android":
        self.start_service()

and according to your naming in main.py ,remember to make sure modify some items in bulldozer.spec like below:

# (str) Package name
package.name = my_app

# (str) Package domain (needed for android/ios packaging)
package.domain = org.pck

# add pyjnius to requirements
requirements = pyjunius

# add to service
services = Myservice_5:service.py
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文