Пишу почтовый клиент на Python, который для заданных контактов показывает переписку в виде чата. Собирается под Android с помощью Buildozer. В активном режиме приложение работает, но хочу ещё запускать фоновую проверку почты отдельным сервисом.
UPDATE: поправил код на использование java-класса. Ошибок не выдает, но сервис в логи ничего не пишет и по внешним признакам - не работает.
В buildozer.spec сервис объявлен так:
services = Chatmail_service:service/background_check.py:foreground:foregroundServiceType=dataSync
Код запуска:
from kivy.utils import platform
def start_background_service(self):
if platform != "android":
logger.info(f"Background service is not started: platform={platform}")
return
if self.background_service is not None:
logger.info("Background service is already started")
return
try:
logger.info(f"Setting up Android background service: platform={platform}")
from jnius import autoclass
self.background_activity = autoclass('org.kivy.android.PythonActivity').mActivity
service_name = f"{self.background_activity.getPackageName()}.ServiceChatmail_service"
autoclass(service_name).start(self.background_activity, '')
logger.info("Android background service start requested")
except Exception as error:
self.background_activity = None
logger.exception(f"Unable to start Android background service: {error}")
Код сервиса:
def run():
logger.info("Foreground mail service started")
# код проверки
if __name__ == "__main__":
logger.info("service/background_check.py executed")
run()
Как правильно запустить сервис, чтобы при свернутом приложении появлялись уведомления о новом сообщении?