这个答案从
这篇博客文章中借用了很多代码,该博客文章的作者是
Igor Hrupin。
对于一个普通的PhoneGap应用程序,您的
项目 > src > [com/org/whatever].[YourNameSpace].[ActivityNameHere] > [ActivityNameHere].java
应该大致如下。
package [com/org/whatever].[YourNameSpace].[ActivityNameHere];
import org.apache.cordova.*;
import android.os.Bundle;
public class [ActivityNameHere] extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
}
}
我们要做的是将其更改为以下代码的样子。未更改的行已被注释以便清晰,但在实施时应取消注释。
请记得用您自己的值替换 [com/org/whatever]、[YourNameSpace] 和多个 ActivityNameHere 占位符。
import java.io.File;
import android.util.Log;
private static [ActivityNameHere] instance;
instance = this;
[ActivityNameHere].getInstance().clearApplicationData();
public static [ActivityNameHere] getInstance() {
return instance;
}
public void clearApplicationData() {
File cache = getCacheDir();
File appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
deleteDir(new File(appDir, s));
Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");
}
}
}
}
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();
}
如我的问题所述,我没有Java技能,因此我从我能找到的东西中拼凑出了这个代码,并且它似乎可以工作。请据此进行编辑 - 我认为这是应该让人们有效地复制和粘贴的东西,因为PhoneGap在Android上的全部意义就是将开发者从Java中抽象出来(值得一提的是,在我当前的项目完成后,我将开始学习Java)。
代码似乎可以工作,至少在我的情况下是这样。可以添加以下内容:
(1) 可以按
这些线路从JS调用此函数的能力。
和
(2) 选择只在应用程序首次运行时清除缓存,以便模拟应用程序被“强制关闭”的情况。