Фоновая служба и обновления пользовательского интерфейса и реализация WAL

В моем приложении я запускаю службу в 12 часов каждый вечер с помощью будильника, все работает как положено.

У меня есть три вкладки "Фрагмент", каждая вкладка имеет вид списка, при щелчке элемента списка отображается подробный вид.

Если пользователь откроет мое приложение, скажем, в 11:59 (до того, как служба обновит базовые данные из базы данных), он получит данные в виде списка, но когда часы пробьют 12, моя обработка начнется, и база данных будет заблокирована (у меня есть реализована эксклюзивная блокировка на БД во время работы службы для предотвращения вмешательства нескольких потоков), когда пользователь нажимает на строку списка, в подробном представлении есть пустые поля и это правильно, так как БД заблокирована и в данный момент обновляется.

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

private boolean isMyServiceRunning() {
        ActivityManager manager = (ActivityManager) getActivity().getSystemService(getActivity().ACTIVITY_SERVICE);
        for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
            if ("com.xxx.xxx.MyService".equals(service.service.getClassName())) {
                return true;
            }
        }
        return false;
    }

затем:

if(isMyServiceRunning()){
Show dialog logic here
} 

Но мне интересно, как прекратить это из фонового процесса. Любые идеи, что я могу сделать?

Второй способ сделать это - включить запись в журнал впереди, было бы замечательно, если бы кто-нибудь помог мне найти хорошие советы по внедрению WAL в Android.

0 ответов

Другие вопросы по тегам