@@ -62,10 +62,15 @@ public void onCreate() {
6262 public int onStartCommand (Intent intent , int flags , int startId ) {
6363 if (pythonThread != null ) {
6464 Log .v ("python service" , "service exists, do not start again" );
65- return START_NOT_STICKY ;
65+ return startType ();
66+ }
67+ //intent is null if OS restarts a STICKY service
68+ if (intent == null ) {
69+ Context context = getApplicationContext ();
70+ intent = getThisDefaultIntent (context , "" );
6671 }
6772
68- startIntent = intent ;
73+ startIntent = intent ;
6974 Bundle extras = intent .getExtras ();
7075 androidPrivate = extras .getString ("androidPrivate" );
7176 androidArgument = extras .getString ("androidArgument" );
@@ -91,6 +96,10 @@ protected int getServiceId() {
9196 return 1 ;
9297 }
9398
99+ protected Intent getThisDefaultIntent (Context ctx , String pythonServiceArgument ) {
100+ return null ;
101+ }
102+
94103 protected void doStartForeground (Bundle extras ) {
95104 String serviceTitle = extras .getString ("serviceTitle" );
96105 String serviceDescription = extras .getString ("serviceDescription" );
@@ -153,7 +162,10 @@ public void onDestroy() {
153162 @ Override
154163 public void onTaskRemoved (Intent rootIntent ) {
155164 super .onTaskRemoved (rootIntent );
156- stopSelf ();
165+ //sticky servcie runtime/restart is managed by the OS. leave it running when app is closed
166+ if (startType () != START_STICKY ) {
167+ stopSelf ();
168+ }
157169 }
158170
159171 @ Override
0 commit comments