我开发了一个每天运行一次的应用程序。在那我想在一个文件中更新一个日期(所以它需要每天完成)。
我在 Handler 的帮助下使它成为可能:
final Runnable mUpdateResults = new Runnable() {
public void run() {
try{
FileInputStream fia = openFileInput("ActualDate");
StringBuffer actualContent = new StringBuffer("");
byte[] buffer = new byte[1024];
try {
while ((fia.read(buffer)) != -1) {
actualContent.append(new String(buffer));
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
actualDate = actualContent.toString().trim();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Calendar c = Calendar.getInstance();
try {
c.setTime(sdf.parse(actualDate));
} catch (Exception e) {
e.printStackTrace();
}
c.add(Calendar.DATE, 1);
actualDate = sdf.format(c.getTime());
FileOutputStream foa = openFileOutput("ActualDate", Context.MODE_PRIVATE);
foa.write(actualDate.getBytes());
foa.close();
}catch (Exception e) {
// TODO: handle exception
startupFunction();
}
}
};
long delay = 24*60*60*1000; // first run after a day
long period = 24*60*60*1000; // repeat every day.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
mHandler.post(mUpdateResults);
}
}, delay, period);
这背后的实际想法是,我希望我的应用程序有一个用户无法更改的设备独立日期。我将第一次出现的日期存储在 UTC 日期的ActualDate文件中。
问题:代码工作正常,除非设备关闭,因此线程在那个时候停止。我该如何克服这个问题。
各种建议都非常感谢。提前致谢。