2011-11-17 54 views
1

我试图从内部存储清除我的应用程序的所有数据,问题是它在模拟器上工作。我可以删除所有文件,将所有共享首选项设置为默认和删除数据库,但是当我重置应用程序后在我的手机(HTC EVO 3D)上运行我时,从Web服务器收到的图像不会合并。只有这样才能发生的事情是,如果我已经将它们放在我的数据库中了......这非常奇怪,因为我已经删除了数据库和所有其他文件。下面是我使用的代码:android删除应用程序数据奇怪的问题

 //Delete sqlite files : 
     boolean dbFile = deleteDatabase("stampii_sys_tpl.sqlite"); 
     Log.e("","deleted : "+dbFile); 

     String cache = this.getCacheDir().toString(); 
     Log.e("","dbPath : "+cache); 
     File ChFolder = new File(cache); 
     boolean cachee = deleteDirectory(ChFolder); 
     Log.e("","Database Folder Delete Success : "+cachee); 


     // Delete Databases Folder : 
     String dbPath = "/data/data/"+this.getPackageName()+"/databases/"; 
     Log.e("","dbPath : "+dbPath); 
     File dbFolder = new File(dbPath); 
     boolean dbFold = deleteDirectory(dbFolder); 
     Log.e("","Database Folder Delete Success : "+dbFold); 

     // Delete Files Folder : 
     String name = this.getFilesDir().toString(); 
     Log.e("","path : "+name); 
     File files = new File(name); 
     boolean filesFol = deleteDirectory(files); 
     Log.e("","filesFol : "+filesFol); 

     // Clear Shared Preferences : 
     editor.putBoolean("resetApp", false); 
     editor.putBoolean("isLoggedIn", false); 
     editor.putInt("storagePath", 0); 
     editor.putInt("lastUser", 0); 
     editor.putBoolean("getInfoFromJsonForColl", true); 
     editor.commit(); 


static public boolean deleteDirectory(File path) { 
    if(path.exists()) { 
     File[] files = path.listFiles(); 
     if (files == null) { 
      return true; 
     } 
     for(int i=0; i<files.length; i++) { 
     if(files[i].isDirectory()) { 
      deleteDirectory(files[i]); 
     } 
     else { 
      files[i].delete(); 
     } 
     } 
    } 
    return(path.delete()); 
    } 

所以我的问题是...难道我做错了什么,如果有保持某种程度上的应用程序的数据库缓存或类似的Android的可能性即使原始文件被删除。

在此先感谢!

回答

1

而不是删除您的数据库文件为什么不删除表中的数据。在这种情况下,您不需要复制粘贴或重新创建数据库。只需清除您不再需要的数据,即可解决您的问题! :)