[英]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.