首页 新闻 搜索 专区 学院

如何在android应用中定时进行操作

0
悬赏园豆:5 [已关闭问题] 关闭于 2012-08-13 10:44

我写了一个android小应用,里面有一个功能要求程序在每天凌晨0点时进行一些操作。

一开始我采用的是传统的java的Timer和TimerTask来进行。我写了一个Service,在onCreate()里面写了这样一段代码:

//创建计划任务
        TimerTask task=new TimerTask()
        {
            @Override
            public void run()
            {
                //每天凌晨自动更新数据
                SharedPreferences sp=getSharedPreferences("actm", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor=sp.edit();
                editor.putLong("sum", 0L);
                editor.commit();
                
                //取消通知栏通知
                final NotificationManager manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
                manager.cancel(NOTIFY_ID);
            }           
        };
        Timer timer=new Timer();
        int hour=new Date().getHours();
        timer.schedule(task,(24-hour)*3600*1000, 24*3600*1000);
        //timer.schedule(task,180*1000, 180*1000);//测试用

测试的时候,我延时用180*1000逻辑正常,但是换到(24-hour)*3600*1000就不行了,0点时根本就没有进行更新。

 

然后我想到了用广播,一开始用Intent.ACTION_DATE_CHANGED,也不行,网上说这个广播不可靠。于是我换成Intent.ACTION_TIME_TICK,一分钟发送一次,总该行了吧?广播的处理如下:

            else if(intent.getAction().equals(Intent.ACTION_TIME_TICK))
            {
                cal=Calendar.getInstance();
                if(cal.get(Calendar.HOUR_OF_DAY)==0 && cal.get(Calendar.MINUTE)==0)
                {
                    //每天凌晨自动更新数据
                    editor.putLong("sum", 0L);
                    editor.commit();
                    
                    //取消通知栏通知
                    final NotificationManager manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
                    manager.cancel(NOTIFY_ID);
                }
            }

可还是不行!

 

我想知道问题出在哪里。按理说这个服务应该还在后台运行的呀,怎么时间一长它就不执行呢?难道是系统回收的问题?

如果是这样,求这类问题的解决办法。

xyzacsd5566的主页 xyzacsd5566 | 初学一级 | 园豆:192
提问于:2012-08-11 17:18
< >
分享
所有回答(2)
0
xyzacsd5566 | 园豆:192 (初学一级) | 2012-08-13 10:44

这个问题是怎么解决的,我也碰到了这个问题,QQ:1050641531在此谢谢了!

支持(0) 反对(0) 可乐web | 园豆:202 (菜鸟二级) | 2014-08-05 13:35
0

这个问题是怎么解决的,我也碰到了这个问题,QQ:1050641531在此谢谢了!

可乐web | 园豆:202 (菜鸟二级) | 2014-08-05 09:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册