Как запустить сервис в python кивах на android в фоновом режиме? - PullRequest
0 голосов
/ 14 апреля 2020

Мне нужна служба для моего приложения на 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. И это я еще не пытался запустить его в фоновом режиме. Что я должен делать? Надеюсь, ты мне поможешь.

1 Ответ

0 голосов
/ 14 апреля 2020

on_stop метод завис приложение, когда я удалил его, мое приложение начало работать.

...