У меня есть служба в моем приложении для Android. Во время onStartCommand я передаю объект службы другому классу. Затем оттуда появляется поток, который через 30 секунд запускает другую службу. Это что-то вроде этого:
public class FooService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
MyClass mc = new MyClass(this);
mc.testMethod();
stopSelf();
return START_NOT_STICKY;
}
}
А это MyClass:
public class MyClass {
private Service service;
public MyClass(Service service) {
this.service = service;
}
public void testMethod() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(20*1000);
Intent intent = new Intent(service, BarService.class);
service.startService(intent);
}
catch (Exception e) {
// CATCH!
}
}
}).start();
}
}
Теперь, как видите, в FooService я вызываю функцию stopSelf(), которая уничтожает этот объект службы. Кстати, у MyClass есть копия этой службы, которая была передана по значению. Через 20 секунд мы можем запустить BarService из MyClass. Я проверил это, и это работает, но я не могу понять, почему! То, как я написал код, грязно (для меня). Правильно ли запускать другую службу из уничтоженной? Спасибо за помощь.