簡體   English   中英

如何在Android中退出時清除應用程序緩存

[英]how to Clear Application cache on exit in android

我正在嘗試清除我自己的應用程序的緩存后,我退出了類似的該應用程序->管理應用程序->“我的應用程序”->清除緩存后 ,我已經嘗試過此代碼,但無法正常工作。 我把它放在main_acitivty.java中

void onCreate(){
}
..
@Override
protected void onStop(){
    super.onStop();
}

//Fires after the OnStop() state
@Override
protected void onDestroy() {
    super.onDestroy();
    try {
        trimCache(this);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
public static void trimCache(Context context) {
    try {
        File dir = context.getCacheDir();
        if (dir != null && dir.isDirectory()) {
            deleteDir(dir);
        }
    } catch (Exception e) {
        // TODO: handle exception
    }
}
public static boolean deleteDir(File dir) {
    if (dir != null && dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }
    // The directory is now empty so delete it
    return dir.delete();
}

我建議在關閉應用程序之前不要做那么長的事情。

它可能在視覺上減慢您關閉應用程序的速度,也可能被系統完全忽略。

如果您暫時使用此文件,則最佳的刪除時間是在使用完文件之后。

如果使用此文件來提高應用程序中某些功能的速度,則通常直接向用戶提供緩存管理是正常的。 例如,設置中的簡單按鈕“清除緩存”。

也正如@Nicolas Maltais所提到的,onDestroy並不總是被調用。 此外,在某些情況下,onStop也不總是被調用。

但是,如果您只想以這種方式進行操作,則還應該知道該應用程序正在關閉。 如果有多個活動,則應將打開/關閉活動計算在內。 最簡單的方法是實現Activity Lifecycle回調並在Application類中為其注冊。 在此實現中,應在onCreate中增加計數器變量,而在onDestroy中減少計數器變量。 您可以在減少onDestroy之后將應用程序關閉確定為零計數器。

int mCounter;

void onCreate() {
    ++mCounter
}

void onDestroy() {
    --mCounter;
    if (mCounter == 0) {
        // app is closing 
    }
}

更新:您應該將此回調存儲在應用程序類中或作為Singleton存儲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM