2016-10-12 9 views
3

Android Marshmallow 6.0でプログラムキャッシュをプログラムでクリアしたいと思います。Marshmallowでプログラムキャッシュをプログラムでクリアする方法

public void trimCache(Context context) { 
     try { 
      File dir = context.getCacheDir(); 
      if (dir != null && dir.isDirectory()) { 
       deleteDir(dir); 
      } 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 

public 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; 
       } 
      } 
     } 

     // The directory is now empty so delete it 
     return dir.delete(); 
    } 
+0

はどのようにそれをでないコードはAPIレベル19から廃止されました下に、私は私のManifests.xmlにCLEAR_APP_CACHE権限を追加することをスタックオーバーフローで読む私は、次のコードを試してみましたが、それはMarshmallow.Iで働いていませんワーキング?あなたのアプリはクラッシュしましたか?人々があなたを助けてくれるように説明してください。 –

+0

@HadiSatrio返信ありがとうございます。 Androidスタジオの[モニター]タブに表示されています。メモリを解放しません。また、メモリ不足のエラーでアプリケーションをクラッシュさせます。私はメモリカードを持っていないと私は自分の携帯電話にわずか500mbの空きメモリがあります。 –

+0

私は同じ問題に直面しています。誰かが解決したら助けてください。おかげで –

答えて

0
add permission: 
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> 

you should check for external cache dir also. 

public void trimCache(Context context) { 
     try { 
      File dir = context.getCacheDir(); 
      if (dir != null && dir.isDirectory()) { 
       deleteDir(dir); 
      } 
      File exDir = context.getExternalCacheDir(); 
      if (exDir != null && exDir.isDirectory()) { 
       deleteDir(exDir); 
      } 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 
+0

私は私の質問に追加することを忘れましたが、私はすでに許可を追加しました。 –

+0

あなたはgetExternalCacheDir()をクリアしていません。 –

関連する問題