Я хочу создать приложение, которое запускает службу переднего плана, чтобы проверить, какие другие приложения запущены в любое время.
Запустил службы и запустил некоторую логическую часть в другом потоке.Создано уведомление и таймер (цикл), который проверяет запущенные приложения каждые 100 миллисекунд.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
new Thread() {
public void run() {
startInForeground();
}
}.start();
return START_STICKY;
}
private void startInForeground() {
createNotification();
startTimer();
}
Функция startTimer () ниже, которая проверяет, работает ли любое приложение в фоновом режиме.Все хорошо, я могу определить, какое приложение работает.
public void startTimer() {
ScheduledExecutorService scheduler = Executors
.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
checkAnyAppOpen();
}
}, 0, 100, TimeUnit.MILLISECONDS);
}
Меня беспокоит - мне нужно снова и снова запускать функцию checkAnyAppOpen () в течение бесконечного периода времени.Так это хорошо?или есть другой способ справиться с этим.Каково влияние этого метода?
Мой второй вопрос - я могу остановить свою службу, но таймер (планировщик) работает постоянно.Как я могу это остановить?Как это может повлиять, если он не остановился, так как я должен снова перезапустить службу после некоторого периода времени, который может длиться от 5 до 24 часов.Я должен снова сделать остановку и перезапустить.
Спасибо