如何在后台模式下在android上的python kivy中启动服务?

问题描述 投票:0回答:1

我需要在Android上为我的应用程序提供服务才能从服务器接收消息。我的应用代码:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
import sys
import socket
import time, subprocess
from kivy.uix.label import Label
from jnius import cast
from jnius import autoclass
from kivy.context import get_current_context
class MyApp(App):
    def build(self):
        fl = FloatLayout()
        try:
            service = autoclass('org.test.myapp.ServiceMyservice')                                                                  
            mActivity = autoclass('org.kivy.android.PythonActivity').mActivity
            service.start(mActivity, "")
        except Exception as error:
            fl.add_widget(Label(text=str(error), font_size=(30)))
    def on_stop(self):
        return True
if __name__ == '__main__':
    MyApp().run()

此代码不返回任何错误,但服务无法启动。服务代码:

import sys, socket, os, time, pickle
from jnius import autoclass, cast
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'example-78967.portmap.host'
port = 78967
s.connect((host,port))
s.send(('hello').encode('utf-8'))

我试图在智能手机上启动此代码,并且它起作用了,我收到了消息。这意味着该服务不会启动,并且没有任何错误。我的服务位于service/main.py中。在services中的buildozer.spec部分中,添加了:services = myservice:./service/main.py。而且我还没有尝试在后台运行它。我该做什么?我希望你能帮助我。

python android service kivy pyjnius
1个回答
0
投票

on_stop方法使应用程序崩溃,当我删除它时,我的应用程序已开始运行。

© www.soinside.com 2019 - 2024. All rights reserved.