Есть сервис такого типа, который запускается каждый раз при открытии приложения:
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);
}
}
Словами @ЮрийСПб
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У голосового сообщения есть массив значений для визуализации, нужно сделать эту визуализациюКак это лучше сделать? Пример массива:
Можно ли как-нибудь при нажатии на кнопку, чтобы открывался в браузере файл htmlЯ закинул его в папку assets а что дальше делать не знаю
Есть элементы активности, которые не нужны до порыХотелось бы их спрятать, а при обработке события показать