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

相关问题