我如何让我的应用程序每X次做一些事情

时间:2014-07-06 06:43:53

标签: android date service calendar

我开发了一个应用程序,每隔X时间设置一次。 我想到了一些想法如何做到这一点,但我学习java和android mySelf,我不知道什么是正确的方法来做到这一点。 所以,我的应用程序以" Service"我创建了一个具有if语句的While循环,如:

示例= " mySetTim = 6/7/14;"

while(true){
if(currentDate == getTime){
 //Do Something....
}
}

并且它有效,但如果我想做什么"某事"每天。 我如何通过它,因为我的SetTime日期不会在一年内返回2次。

3 个答案:

答案 0 :(得分:1)

您正在寻找的是任务计划程序:http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html

有许多方法可以控制Java中的常规调用。如果你的应用程序没有后台工作要做,你可以使用Thread.sleep(X),如果你有一个穿插在其他调用上的任务,你可以检查时间是否已经过去,如:

long somtimefromnow = System.currentTimeMillis() + 12312323;

然后你的代码会定期检查:

if (System.currentTimeMillis() > somtimefromnow) { doSomething(); }

但请勿检查时间是否为==。不能保证比较确切的时间。

答案 1 :(得分:0)

您应该使用Alarm API来完成工作。

准确地查看prior post的内容;


任何其他依赖于此的解决方案保持服务在空中并监视间隔,直到行动中断 当Android遇到资源不足并停止服务时。


请注意,如果您希望在设备重启后继续逻辑,则需要重新启动警报 开机后。请阅读here了解详情。


祝你好运

答案 2 :(得分:0)

你走在正确的道路上,服务是我所知道的最好的方法来实现你想要做的事情,这里有一个帮助你正确使用服务的例子(避免使用while循环)

 public class Bg_Service extends Service {

private Timer timer=new Timer();   
private  long UPDATE_INTERVAL = 10000;  //in Milliseconds, in your case every 24h
private static long DELAY_INTERVAL = 0; //how much time your service needs to wait before starting the process


@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onCreate()
{

  super.onCreate();     

  _startService();
}

 private void _startService()
    {     
        timer= new Timer();
         timer.scheduleAtFixedRate(   

               new TimerTask() {

                      public void run() {                            
                        //Do something                               
                      }
                },
                DELAY_INTERVAL,
                UPDATE_INTERVAL);

     }



 @Override
 public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
 }

}