发出每天晚上 9:00 运行的通知
我想在我的应用程序中进行自动同步,该同步将在每天晚上 9:00 进行。我这样做的方式是:
try { Thread.sleep(24hours); } catch (Exception ex) { }
但问题是当用户在 24 小时之前关闭他的设备时,当打开它时线程将再次休眠 24 小时。
所以我正在考虑一种根据系统时钟来管理这个问题的方法。当设备时间为晚上 9:00 时,应用程序将收到警报,我将执行工作。
有可能做到这一点吗?
I want to make an auto synchronize in my application that will happen every day at 9:00 pm. I am doing this in the way of :
try { Thread.sleep(24hours); } catch (Exception ex) { }
But the problem is when the user turns off his device before 24 hours, When turning it on the thread will sleep again for 24 hours.
So I am thinking of a way to manage this depending on the clock of the system. When the device has the time of 9:00pm, the application will be alerted and I will do the work.
Is it possible to make this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(6)
该问题可以通过运行简单的后台线程来解决。
public static void main(String[] args) {
Thread myJobThread = new Thread(this, "My background job");
myJobThread.setDaemon(true);
myJobThread.start();
}
// check the time every minute
private int checkRate = 60000;
@Override
public void run() {
while(true) {
Date now = new Date();
if (now > 9a.m.) {
// do your stuff
}
try {
Thread.sleep(checkRate);
} catch (InterruptedException e){
// handle ex
}
}
}
您可以考虑使用 RealTimeClockListener
。然后,您将编写一个方法clockUpdated()
,操作系统每分钟都会调用该方法。在那里您可以进行计算以确定是否是时候执行您的代码。
也许你可以使用日历来做到这一点:
boolean nine=false;
//until it's nine'o clock
while(!nine){
Calendar calendar=Calendar.getInstance();
if(calendar.get(Calendar.HOUR_OF_DAY)==9&&calendar.get(Calendar.MINUTE)==0&&calendar.get(Calendar.SECOND)==0&&calendar.get(Calendar.MILLISECOND)==0){
nine=true;
nine=true;
}
else {
sleep(yourTime);
}
}
//...whatever should happen now...
//put the boolean back to false;
nine=false;
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
您想要安排您的应用程序在特定时间运行。黑莓的操作系统支持这一点。请参阅安排 BlackBerry 应用程序
You want to schedule your app to run at a particular time. BlackBerry's OS supports this. See Schedule a BlackBerry application