【问题标题】:How to use Service to update sqlite database in android如何使用Service在android中更新sqlite数据库
【发布时间】:2012-11-02 20:22:28
【问题描述】:

我能够更新 sqlite 数据库并通过我的 Activity 中的线程检索数据。但我需要使用服务更新数据库,无论我的应用程序是否运行,它都会每 5 分钟更新一次数据库。所以当我运行应用程序时,我将从当前数据库中获取数据。 我在编写服务以更新数据库时被卡住了。有人可以指导。

【问题讨论】:

    标签: android sqlite android-service


    【解决方案1】:

    在您的服务类上创建一个计时器对象 Timer timer=new Timer();
    在创建时

    @Override
    public void onCreate()
    {
        super.onCreate();
        timer.schedule(new DelayedTask(),300, 300000);// 300000 is 5min
    
    }
    

    类延迟任务

    private class DelayedTask extends TimerTask
    {
    
        @Override
        public void run() {
            Log.i(tag,"Timer Task executing");
    
            // code for updating sqlite database
    
    
        }
    
    }
    

    【讨论】:

    • ScheduledExecutorService 通常比TimerTask 更受欢迎,这并不能解决Android 可以随时停止服务的问题。如果发生这种情况,计划任务将不会执行。
    【解决方案2】:

    这个问题很笼统。要了解如何使用服务,请查看this

    如果您希望每五分钟唤醒一次服务,您应该使用AlarmManager

    如果您在此过程中有具体问题,请发布。

    【讨论】:

    • 我的服务不断消耗更多内存。在某些时候,它达到了近 30 MB。最终服务被ActivityManager关闭,发出的语句是:强制停止服务ServiceRecord 为什么服务消耗这么多内存,而App跑起来只有100KB左右。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    相关资源
    最近更新 更多