2

簡単な質問があります。次の関数がありcacheTime、「4時間に設定するにはどうすればよい4 * 3600000ですか? 」という引数があります。

public static File getCache(String name, Context c, int cacheTime) 
{
    if (cacheTime <= 0)
        return null;
    File cache = new File(c.getCacheDir(), name);
    long now = System.currentTimeMillis();
    if (cache.exists() && (now - cache.lastModified() < cacheTime))
        return cache;
    return null;
}
4

4 に答える 4

7

ミリ秒は1/1000秒です。したがって、4時間は4 * 60 * 60 * 1000=14,400,000になります

キャッシュの無効化の場合、これはおそらく問題ありません。とはいえ、日付の計算はしばしば危険です。ミリ秒よりも長い時間単位を処理する場合、夏時間の移行、うるう秒、およびカレンダーが処理することを目的としたその他すべての処理中に簡単につまずく可能性があります。まれな不正確さが許容できる場合もあれば、そうでない場合もあります。日付の計算を行うときは注意してください。

+1日など、より大きな時間単位で人間の消費可能時間を決定するには、Calendar.roll()を使用します。

于 2013-02-15T21:50:53.493 に答える
6

便利なTimeUnit列挙型の使用方法を学び、次のようなことができるようにします。

TimeUnit.Hours.toMillis(4)

また、コード全体でナプキンの数学やマジックナンバーに依存しないでください。

于 2013-02-15T21:51:51.867 に答える
4
// 4 hours * 60 (min/hour) * 60 (sec/min) * 1000 (msec/sec)
getCache(name, c, 4 * 3600 * 1000);
于 2013-02-15T21:48:12.360 に答える
1
4 * 1000 * 3600

1秒に1000ミリ秒、1時間に3600秒あります。

于 2013-02-15T21:48:02.373 に答える