FileCache.smali
.class public Lcom/cleanmaster/bitmapcache/FileCache;
.super Ljava/lang/Object;
.source "FileCache.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/cleanmaster/bitmapcache/FileCache$FileLastModifSort;
}
.end annotation
# static fields
.field private static EXPIRED_CACHE_TIME:I = 0x0
.field private static FREE_MEM_SPACE_NEEDED_TO_CACHE:I = 0x0
.field private static FREE_SD_SPACE_NEEDED_TO_CACHE:I = 0x0
.field private static MB:I = 0x0
.field private static final TAG:Ljava/lang/String; = "FileCache"
.field public static volatile cacheFileSize:Lcom/cleanmaster/bitmapcache/LongValue;
.field private static fileCache:Lcom/cleanmaster/bitmapcache/FileCache;
# instance fields
.field private CACHE_EXPIRED_FILE_MAX_SIZE:I
.field private CACHE_FILE_MAX_SIZE:I
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 15
const/high16 v0, 0x100000
sput v0, Lcom/cleanmaster/bitmapcache/FileCache;->MB:I
.line 19
const/4 v0, 0x1
sput v0, Lcom/cleanmaster/bitmapcache/FileCache;->FREE_SD_SPACE_NEEDED_TO_CACHE:I
.line 23
const/4 v0, 0x3
sput v0, Lcom/cleanmaster/bitmapcache/FileCache;->FREE_MEM_SPACE_NEEDED_TO_CACHE:I
.line 27
const v0, 0x240c8400
sput v0, Lcom/cleanmaster/bitmapcache/FileCache;->EXPIRED_CACHE_TIME:I
.line 41
new-instance v0, Lcom/cleanmaster/bitmapcache/LongValue;
invoke-direct {v0}, Lcom/cleanmaster/bitmapcache/LongValue;-><init>()V
sput-object v0, Lcom/cleanmaster/bitmapcache/FileCache;->cacheFileSize:Lcom/cleanmaster/bitmapcache/LongValue;
.line 43
const/4 v0, 0x0
sput-object v0, Lcom/cleanmaster/bitmapcache/FileCache;->fileCache:Lcom/cleanmaster/bitmapcache/FileCache;
return-void
.end method
.method private constructor <init>()V
.registers 4
.prologue
const/16 v2, 0x80
const/16 v1, 0xf
.line 44
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 31
iput v2, p0, Lcom/cleanmaster/bitmapcache/FileCache;->CACHE_FILE_MAX_SIZE:I
.line 36
iput v1, p0, Lcom/cleanmaster/bitmapcache/FileCache;->CACHE_EXPIRED_FILE_MAX_SIZE:I
.line 46
invoke-virtual {p0}, Lcom/cleanmaster/bitmapcache/FileCache;->isHaveSdcard()Z
move-result v0
if-eqz v0, :cond_16
.line 47
iput v2, p0, Lcom/cleanmaster/bitmapcache/FileCache;->CACHE_FILE_MAX_SIZE:I
.line 48
iput v1, p0, Lcom/cleanmaster/bitmapcache/FileCache;->CACHE_EXPIRED_FILE_MAX_SIZE:I
.line 54
:goto_15
return-void
.line 51
:cond_16
const/4 v0, 0x4
iput v0, p0, Lcom/cleanmaster/bitmapcache/FileCache;->CACHE_FILE_MAX_SIZE:I
.line 52
const/4 v0, 0x2
iput v0, p0, Lcom/cleanmaster/bitmapcache/FileCache;->CACHE_EXPIRED_FILE_MAX_SIZE:I
goto :goto_15
.end method
.method public static deleteDirectoryExpiredCache(Ljava/lang/String;ILcom/cleanmaster/bitmapcache/LongValue;Ljava/util/List;Lcom/cleanmaster/bitloader/task/IScanTaskController;)V
.registers 13
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"I",
"Lcom/cleanmaster/bitmapcache/LongValue;",
"Ljava/util/List",
"<",
"Ljava/lang/String;",
">;",
"Lcom/cleanmaster/bitloader/task/IScanTaskController;",
")V"
}
.end annotation
.prologue
.line 209
if-eqz p0, :cond_a
if-eqz p0, :cond_b
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
if-gtz v0, :cond_b
.line 242
:cond_a
return-void
.line 212
:cond_b
sget-object v0, Ljava/io/File;->separator:Ljava/lang/String;
invoke-virtual {p0, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_26
.line 213
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
sget-object v1, Ljava/io/File;->separator:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
.line 216
:cond_26
new-instance v0, Ljava/io/File;
invoke-direct {v0, p0}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 218
if-eqz v0, :cond_39
invoke-virtual {v0}, Ljava/io/File;->exists()Z
move-result v1
if-eqz v1, :cond_a
invoke-virtual {v0}, Ljava/io/File;->isDirectory()Z
move-result v1
if-eqz v1, :cond_a
:cond_39
if-eqz v0, :cond_a
.line 222
invoke-virtual {v0}, Ljava/io/File;->listFiles()[Ljava/io/File;
move-result-object v1
.line 223
if-eqz v1, :cond_a
array-length v0, v1
if-eqz v0, :cond_a
.line 225
array-length v2, v1
const/4 v0, 0x0
:goto_46
if-ge v0, v2, :cond_a
aget-object v3, v1, v0
.line 227
if-eqz p4, :cond_52
invoke-interface {p4}, Lcom/cleanmaster/bitloader/task/IScanTaskController;->checkStop()Z
move-result v4
if-nez v4, :cond_a
.line 228
:cond_52
if-eqz v3, :cond_7b
invoke-virtual {v3}, Ljava/io/File;->isFile()Z
move-result v4
if-eqz v4, :cond_7b
.line 230
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v4
invoke-virtual {v3}, Ljava/io/File;->lastModified()J
move-result-wide v6
sub-long/2addr v4, v6
int-to-long v6, p1
cmp-long v4, v4, v6
if-lez v4, :cond_6f
.line 231
invoke-virtual {v3}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v4
invoke-interface {p3, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 233
:cond_6f
iget-wide v4, p2, Lcom/cleanmaster/bitmapcache/LongValue;->value:J
invoke-virtual {v3}, Ljava/io/File;->length()J
move-result-wide v6
add-long/2addr v4, v6
iput-wide v4, p2, Lcom/cleanmaster/bitmapcache/LongValue;->value:J
.line 225
:cond_78
:goto_78
add-int/lit8 v0, v0, 0x1
goto :goto_46
.line 235
:cond_7b
if-eqz v3, :cond_78
invoke-virtual {v3}, Ljava/io/File;->isDirectory()Z
move-result v4
if-eqz v4, :cond_78
.line 237
invoke-virtual {v3}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v3
invoke-static {v3, p1, p2, p3, p4}, Lcom/cleanmaster/bitmapcache/FileCache;->deleteDirectoryExpiredCache(Ljava/lang/String;ILcom/cleanmaster/bitmapcache/LongValue;Ljava/util/List;Lcom/cleanmaster/bitloader/task/IScanTaskController;)V
goto :goto_78
.end method
.method private deleteExpiredFile(Ljava/util/List;Lcom/cleanmaster/bitmapcache/LongValue;Lcom/cleanmaster/bitloader/task/IScanTaskController;)V
.registers 12
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Ljava/lang/String;",
">;",
"Lcom/cleanmaster/bitmapcache/LongValue;",
"Lcom/cleanmaster/bitloader/task/IScanTaskController;",
")V"
}
.end annotation
.prologue
.line 277
if-eqz p1, :cond_1a
.line 278
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_6
:goto_6
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1a
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 279
if-eqz p3, :cond_1b
invoke-interface {p3}, Lcom/cleanmaster/bitloader/task/IScanTaskController;->checkStop()Z
move-result v2
if-eqz v2, :cond_1b
.line 291
:cond_1a
return-void
.line 282
:cond_1b
invoke-static {}, Lcom/cleanmaster/bitmapcache/FileCacheReserver;->getInst()Lcom/cleanmaster/bitmapcache/FileCacheReserver;
move-result-object v2
invoke-virtual {v2, v0}, Lcom/cleanmaster/bitmapcache/FileCacheReserver;->isMarkReserved(Ljava/lang/String;)Z
move-result v2
if-nez v2, :cond_6
.line 283
new-instance v2, Ljava/io/File;
invoke-direct {v2, v0}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 284
if-eqz v2, :cond_6
.line 285
iget-wide v4, p2, Lcom/cleanmaster/bitmapcache/LongValue;->value:J
invoke-virtual {v2}, Ljava/io/File;->length()J
move-result-wide v6
sub-long/2addr v4, v6
iput-wide v4, p2, Lcom/cleanmaster/bitmapcache/LongValue;->value:J
.line 286
invoke-virtual {v2}, Ljava/io/File;->delete()Z
goto :goto_6
.end method
.method public static declared-synchronized getFileCache()Lcom/cleanmaster/bitmapcache/FileCache;
.registers 2
.prologue
.line 56
const-class v1, Lcom/cleanmaster/bitmapcache/FileCache;
monitor-enter v1
:try_start_3
sget-object v0, Lcom/cleanmaster/bitmapcache/FileCache;->fileCache:Lcom/cleanmaster/bitmapcache/FileCache;
if-nez v0, :cond_e
.line 57
new-instance v0, Lcom/cleanmaster/bitmapcache/FileCache;
invoke-direct {v0}, Lcom/cleanmaster/bitmapcache/FileCache;-><init>()V
sput-object v0, Lcom/cleanmaster/bitmapcache/FileCache;->fileCache:Lcom/cleanmaster/bitmapcache/FileCache;
.line 59
:cond_e
sget-object v0, Lcom/cleanmaster/bitmapcache/FileCache;->fileCache:Lcom/cleanmaster/bitmapcache/FileCache;
:try_end_10
.catchall {:try_start_3 .. :try_end_10} :catchall_12
monitor-exit v1
return-object v0
.line 56
:catchall_12
move-exception v0
monitor-exit v1
throw v0
.end method
# virtual methods
.method public isHaveSdcard()Z
.registers 3
.prologue
.line 67
invoke-static {}, Landroid/os/Environment;->getExternalStorageState()Ljava/lang/String;
move-result-object v0
.line 68
if-eqz v0, :cond_10
const-string v1, "mounted"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_10
.line 69
const/4 v0, 0x1
.line 71
:goto_f
return v0
:cond_10
const/4 v0, 0x0
goto :goto_f
.end method
.method public declared-synchronized removeExpiredCache(Lcom/cleanmaster/bitloader/task/IScanTaskController;)V
.registers 6
.prologue
.line 249
monitor-enter p0
:try_start_1
invoke-static {}, Lcom/cleanmaster/bitmapcache/DbPath;->getPictureParentDir()Ljava/lang/String;
move-result-object v0
.line 254
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 256
sget v2, Lcom/cleanmaster/bitmapcache/FileCache;->EXPIRED_CACHE_TIME:I
sget-object v3, Lcom/cleanmaster/bitmapcache/FileCache;->cacheFileSize:Lcom/cleanmaster/bitmapcache/LongValue;
invoke-static {v0, v2, v3, v1, p1}, Lcom/cleanmaster/bitmapcache/FileCache;->deleteDirectoryExpiredCache(Ljava/lang/String;ILcom/cleanmaster/bitmapcache/LongValue;Ljava/util/List;Lcom/cleanmaster/bitloader/task/IScanTaskController;)V
.line 259
sget-object v0, Lcom/cleanmaster/bitmapcache/FileCache;->cacheFileSize:Lcom/cleanmaster/bitmapcache/LongValue;
invoke-direct {p0, v1, v0, p1}, Lcom/cleanmaster/bitmapcache/FileCache;->deleteExpiredFile(Ljava/util/List;Lcom/cleanmaster/bitmapcache/LongValue;Lcom/cleanmaster/bitloader/task/IScanTaskController;)V
:try_end_16
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_16} :catch_1d
.catch Ljava/lang/StackOverflowError; {:try_start_1 .. :try_end_16} :catch_1b
.catchall {:try_start_1 .. :try_end_16} :catchall_18
.line 265
:goto_16
monitor-exit p0
return-void
.line 249
:catchall_18
move-exception v0
monitor-exit p0
throw v0
.line 262
:catch_1b
move-exception v0
goto :goto_16
.line 260
:catch_1d
move-exception v0
goto :goto_16
.end method