@@ -25,14 +25,14 @@ public class PythonService extends Service implements Runnable {
25
25
private Thread pythonThread = null ;
26
26
27
27
// Python environment variables
28
- private String androidPrivate ;
29
- private String androidArgument ;
30
- private String pythonName ;
31
- private String pythonHome ;
32
- private String pythonPath ;
33
- private String serviceEntrypoint ;
28
+ public String androidPrivate ;
29
+ public String androidArgument ;
30
+ public String pythonName ;
31
+ public String pythonHome ;
32
+ public String pythonPath ;
33
+ public String serviceEntrypoint ;
34
34
// Argument to pass to Python code,
35
- private String pythonServiceArgument ;
35
+ public String pythonServiceArgument ;
36
36
37
37
38
38
public static PythonService mService = null ;
@@ -60,28 +60,35 @@ public void onCreate() {
60
60
61
61
@ Override
62
62
public int onStartCommand (Intent intent , int flags , int startId ) {
63
+ startIntent = intent ;
63
64
if (pythonThread != null ) {
64
65
Log .v ("python service" , "service exists, do not start again" );
65
- return START_NOT_STICKY ;
66
+ return startType () ;
66
67
}
68
+ if (intent != null ) {
69
+
70
+ Bundle extras = intent .getExtras ();
71
+ androidPrivate = extras .getString ("androidPrivate" );
72
+ androidArgument = extras .getString ("androidArgument" );
73
+ serviceEntrypoint = extras .getString ("serviceEntrypoint" );
74
+ pythonName = extras .getString ("pythonName" );
75
+ pythonHome = extras .getString ("pythonHome" );
76
+ pythonPath = extras .getString ("pythonPath" );
77
+ boolean serviceStartAsForeground = false ;
78
+ String foreground = extras .getString ("serviceStartAsForeground" );
79
+ if (foreground != null ) {
80
+ serviceStartAsForeground = foreground .equals ("true" );
81
+ }
82
+ pythonServiceArgument = extras .getString ("pythonServiceArgument" );
83
+ pythonThread = new Thread (this );
84
+ pythonThread .start ();
67
85
68
- startIntent = intent ;
69
- Bundle extras = intent .getExtras ();
70
- androidPrivate = extras .getString ("androidPrivate" );
71
- androidArgument = extras .getString ("androidArgument" );
72
- serviceEntrypoint = extras .getString ("serviceEntrypoint" );
73
- pythonName = extras .getString ("pythonName" );
74
- pythonHome = extras .getString ("pythonHome" );
75
- pythonPath = extras .getString ("pythonPath" );
76
- boolean serviceStartAsForeground = (
77
- extras .getString ("serviceStartAsForeground" ).equals ("true" )
78
- );
79
- pythonServiceArgument = extras .getString ("pythonServiceArgument" );
80
- pythonThread = new Thread (this );
81
- pythonThread .start ();
82
-
83
- if (serviceStartAsForeground ) {
84
- doStartForeground (extras );
86
+ if (serviceStartAsForeground ) {
87
+ doStartForeground (extras );
88
+ }
89
+ } else {
90
+ pythonThread = new Thread (this );
91
+ pythonThread .start ();
85
92
}
86
93
87
94
return startType ();
@@ -153,7 +160,9 @@ public void onDestroy() {
153
160
@ Override
154
161
public void onTaskRemoved (Intent rootIntent ) {
155
162
super .onTaskRemoved (rootIntent );
156
- stopSelf ();
163
+ if (startType () == START_NOT_STICKY ) {
164
+ stopSelf ();
165
+ }
157
166
}
158
167
159
168
@ Override
0 commit comments