1

我看到的計算器其他答案,但沒有人幫我解決我的問題。上的WebView清除高速緩存中,當應用程序被殺害

我有web視圖在活動的應用程序,我想,當應用程序被殺害清除緩存。

下面是我用刪除的cache

public static void deleteCache(Context context) { 
    try { 
     File dir = context.getCacheDir(); 
     deleteDir(dir); 
    } catch (Exception e) {} 
} 

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; 
      } 
     } 
     return dir.delete(); 
    } else if(dir!= null && dir.isFile()) { 
     return dir.delete(); 
    } else { 
     return false; 
    } 

我想,當應用程序被殺害清除緩存或者僅僅是應用程序將被殺害之前,我在哪裏打電話deleteCache(this)的代碼?

我試着把它放在OnDestroy()這個活動的方法中,但是當我按回活動的時候清除緩存的活動是而不是我的要求

所以我添加

@Override 
    public void onBackPressed() { 
     moveTaskToBack(true); 
    } 

所以我的活動不會調用的onDestroy()在所有當我按下後退按鈕,也沒有我殺的應用。

我在哪裏需要清除的生命週期方法的緩存? 和 在我的應用程序被殺死之前,哪裏可以觸發一個事件給javascript函數?

+0

試試這個。 http://stackoverflow.com/questions/2465432/android-webview-completely-clear-the-cache –

+0

@AlvinVarghese這個問題更沒有使用高速緩存的所有應用程序的。所以他在webview加載時清除緩存。不是我的情況,我想在應用程序被銷燬時清除它。 – DroidDev

+1

如果系統「決定」殺死正在後臺的應用進程,則不會得到任何回調。如果你作爲一個開發人員不能依賴它,那麼你可能應該重新思考這個問題的方法嗎?......你所知道的肯定是你的應用程序是由['Application'的'onCreate() '方法被稱爲](http://stackoverflow.com/questions/43101071/application-lifecycle-when-app-is-killed-in-the-background/43101601#43101601)。那麼爲什麼不從該方法內清除緩存,即不是應用程序被殺,而是應用程序啓動後? – Onik

回答

0

,你不會得到任何回調如果系統「決定」殺你的應用程序在後臺被調用。如果你作爲一個開發人員不能依靠這個,你可能應該重新思考解決問題的方法嗎?...

你知道的當然是當你的應用程序創建時Application's onCreate() method is called。那麼爲什麼不從該方法中清除緩存,即不是在應用程序查殺之後,而是在其啓動之後?

我關注了this approach並創建了一項服務並清除了我的緩存onTaskRemoved()

好方法,但根據我的經驗,在極少數情況下onTaskRemoved()不保證被調用。我建議測試不同操作系統版本的方法調用(理想情況下適用於各種設備)。另請注意onTaskRemoved() is only called when a user removes your app from the recent task list。總而言之,如果您使用ApplicationonCreate()來清除緩存,則操作將保證執行。

0

只是在離開活動之前放了這個

WebView.clearCache(true);

+0

你是什麼通過離開活動意味着什麼?你的意思是onDestroy()?請檢查我的問題。 – DroidDev

+0

是的,你可以放在onDestroy或寫完成(),當你導航到另一個活動 – Faravy

+0

OnDestroy將在我按下後退按鈕時被調用。我想在清除應用程序時清除緩存。再次請檢查我的問題! – DroidDev

相關問題