后台服务和UI更新并实现WAL

时间:2014-01-23 13:39:19

标签: java android sqlite cron wal

在我的应用程序中,我使用闹钟每晚12点运行一项服务,一切正常。

我有三个片段选项卡,每个选项卡都有一个列表视图,点击列表项时会显示详细视图。

如果用户在11:59打开我的应用程序(在服务更新数据库中的基础数据之前),他将在列表视图中获取数据,但是当时钟达到12时,我的处理开始并且数据库被锁定(当服务正在运行以防止多个线程干扰时,我已经在db上实现了独占锁定),因为用户单击列表行,详细视图具有空白字段,因此数据库被锁定并且当前正在更新。

我该如何避免这种情况?我试图通过检查我的服务是否从Fragment选项卡运行来显示加载器对话框我可以正确显示此对话框,但我发现很难终止它。

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
} 

但我想知道如何从后台进程终止它。任何想法我能做什么?

这样做的第二种方法是启用Write ahead logging,如果有人帮助我找到关于在an​​droid中实现WAL的一些好的关键,那将会很棒。

0 个答案:

没有答案