2017-05-31 8 views
1

以下のコードを試してみましたが、キャッチファイルのパスを取得できましたが、パスまたはそのパスのデータを削除できません。 以下は私がこれを行うために使用しているコードです。Xamarinでアプリケーションのキャッチデータをプログラムで消去する方法

public void clearApplicationData() 
     { 
      var tmpdir = System.IO.Path.GetTempPath(); 
      File applicationDirectory = new File(tmpdir); 
       if (applicationDirectory != null && applicationDirectory.Exists()) 
      { 
       //deleteFile(applicationDirectory); 
       string[] fileNames = applicationDirectory.List(); 
       foreach (string fileName in fileNames) 
       { 
        if (!fileNames.Equals("lib")) 
        { 
         deleteFile(new File(applicationDirectory, fileName)); 
        } 
       } 
      } 
     } 
public static bool deleteFile(File file) 
     { 
      bool deletedAll = false; 
      if (file != null) 
      { 
       if (file.IsDirectory) 
       { 
        string[] children = file.List(); 
        for (int i = 0; i < children.Length; i++) 
        { 
         deletedAll = deleteFile(new File(file, children[i])) && deletedAll; 
        } 
       } 
       else 
       { 
        file.DeleteOnExit(); 
        deletedAll = file.Exists(); 
       } 
      } 

      return deletedAll; 
     } 

は私がCLEAR_APP_CATCH、CLEAR_APP_USER_DATA の権限をも追加していた私はこれをやって助けてください、私は完全なアプリケーションのキャッシュとデータを消去して喜んで、最後に私は示すために、アプリケーションを再起動して喜んでログインページまたは終了アプリケーション。

答えて

4

これで、すべてのデータとキャッシュが一度に消去されるはずです。それは、アプリケーションを閉じて、メモリを解放します。

((ActivityManager)Application.Context.GetSystemService(ActivityService)).ClearApplicationUserData(); 

これが望ましくない場合は、以下のコードを試してみてください。

また、Java.IOよりもSystem.IOファイルユーティリティを使用することをお勧めします。

try 
{ 
    var cachePath = System.IO.Path.GetTempPath(); 

    // If exist, delete the cache directory and everything in it recursivly 
    if (System.IO.Directory.Exists(cachePath)) 
     System.IO.Directory.Delete(cachePath, true); 

    // If not exist, restore just the directory that was deleted 
    if (!System.IO.Directory.Exists(cachePath)) 
     System.IO.Directory.CreateDirectory(cachePath); 
} 
catch(Exception){} 

そして、あなたはcachePathの代わりに

var dataPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); 

を使用してアプリケーションデータを削除するには、同じことをしようと、それはまだヒープ内の情報を持っているので、あなたのアプリがおかしい動作をする可能性がありますことを心に留めておくことができますメモリと対応するファイルがありません。たとえば、これに加えてSharedPrefsをクリアしたいと思うでしょう。

+0

このアプリケーションを使用している場合、私のアプリケーションは完全に停止していますが、これを停止してアプリケーションの主なアクティビティを表示する方法はありますか? –

+0

@ROHITMANDALAPU私はあなたの代わりの方法を与えるために私のポストを編集しました – jtagg

関連する問題