Новый поток в сервисе

275
30 мая 2017, 00:10

Есть сервис такого типа, который запускается каждый раз при открытии приложения:

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.

Как можно добиться того, что бы этот поток всегда был только водной экземпляре?

Answer 1
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);
}
}

Словами @ЮрийСПб

READ ALSO
Android визуализация голосового сообщения

Android визуализация голосового сообщения

У голосового сообщения есть массив значений для визуализации, нужно сделать эту визуализациюКак это лучше сделать? Пример массива:

243
Открыть файл Html из приложения

Открыть файл Html из приложения

Можно ли как-нибудь при нажатии на кнопку, чтобы открывался в браузере файл htmlЯ закинул его в папку assets а что дальше делать не знаю

323
Как спрятать/показать View?

Как спрятать/показать View?

Есть элементы активности, которые не нужны до порыХотелось бы их спрятать, а при обработке события показать

206