Я хочу, чтобы мой сервис продолжал работать после закрытия приложения, но я не могу этого сделать. Я слышал, что должен использовать startForeground()
, но как это сделать в python? Код приложения:
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from jnius import autoclass
from kivy.uix.label import Label
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=(40)))
return fl
if __name__ == '__main__':
MyApp().run()
Код моего service/main.py
:
import pickle, socket, jnius
for x in range(5):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'example-78945.portmap.host'
port = 78945
s.connect((host,port))
s.send(('hello world').encode('utf-8'))
Код ServiceMyservice.java
:
package org.test.myapp.ServiceMyservice;
import android.content.Intent;
import android.content.Context;
import org.kivy.android.PythonService;
import android.app.Notification;
import android.app.Service;
public class ServiceMyservice extends PythonService {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
protected int getServiceId() {
return 1;
}
static public void start(Context ctx, String pythonServiceArgument) {
Intent intent = new Intent(ctx, ServiceMyservice.class);
String argument = ctx.getFilesDir().getAbsolutePath() + "/app";
intent.putExtra("androidPrivate", ctx.getFilesDir().getAbsolutePath());
intent.putExtra("androidArgument", argument);
intent.putExtra("serviceTitle", "My Application");
intent.putExtra("serviceDescription", "Myservice");
intent.putExtra("serviceEntrypoint", "./service/main.py");
intent.putExtra("pythonName", "myservice");
intent.putExtra("serviceStartAsForeground", true);
intent.putExtra("pythonHome", argument);
intent.putExtra("pythonPath", argument + ":" + argument + "/lib");
intent.putExtra("pythonServiceArgument", pythonServiceArgument);
ctx.startService(intent);
}
static public void stop(Context ctx) {
Intent intent = new Intent(ctx, ServiceMyservice.class);
ctx.stopService(intent);
}
}
Служба запускается и работает, но после закрытия приложения сервис тоже закрывается. Как это исправить ????