我编写了一个循环,用于检查两个文件的文件修改日期。 就Toast文本而言,这是成功的。 但是我似乎无法计算实际比较日期的语法,比较Date1> Date2实际上被android studio拒绝了。
关于如何获得最新修改日期的大量建议是关于Stack Overflow,而不是关于如何制作必要的if语句的答案。
任何帮助都将非常感激。 (是的,我已阅读文档!这个主题的用法示例很差)
Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Email sync loop (maybe change for watcher method)
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(10000);
mHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "Loop", Toast.LENGTH_SHORT).show();
File file = new File(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/Database1.db")));
if (file.exists()) {
Date lastModified = new Date(file.lastModified());
String modified = lastModified.toString();
Toast.makeText(MainActivity.this, modified, Toast.LENGTH_LONG).show();
}
File file2 = new File(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + "/Database2.db")));
if (file2.exists()) {
Date lastModified2 = new Date(file2.lastModified());
String modified2 = lastModified2.toString();
Toast.makeText(MainActivity.this, modified2, Toast.LENGTH_LONG).show();
}
}
});
} catch (Exception e) {
// TODO: handle exception
}
}
}
}).start();
}
答案 0 :(得分:0)
您不需要单独的线程,循环和sleep()
调用,您只需使用Handler
方法安排对postDelayed()
实例的检查。它将在主线程上执行,这对您来说非常好,并且不会阻止应用程序。作为Runnable
实例的最后一步,您可以再次安排它,因此它将循环运行。
如果要停止它,请在处理程序上调用removeCallbacksAndMessages(null)
。
我不确定你想用它做什么,但也许不是做一个轮询循环你可以使用FileObserver类来监视文件更改,here是一个如何使用它的例子
答案 1 :(得分:0)
为了比较两个日期,您始终可以比较它们的毫秒值。
例如date1.getTime()> date2.getTime()
getTime()方法以毫秒为单位返回时间,它是一个可以轻松比较的长值。