Есть сервис такого типа, который запускается каждый раз при открытии приложения:
public class SomeService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(new Runnable() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// Что-то происходит
}
}
}).start();
return super.onStartCommand(intent, flags, startId);
}
}
Проблема в том, что если сначала запустить приложение,потом свернуть/закрыть (сервис продолжает работать) и затем заново открыть, сервис запустится, но будет уже два запущенных потока их onStartCommand.
Как можно добиться того, что бы этот поток всегда был только водной экземпляре?
public class SomeService extends Service {
Thread t;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(t == null || !t.isAlive()){
t = new Thread(new Runnable() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// Что-то происходит
}
}
});
t.start();
}
return super.onStartCommand(intent, flags, startId);
}
}
Словами @ЮрийСПб
Сборка персонального компьютера от Artline: умный выбор для современных пользователей