2017-06-29 12 views
0

調査の結果、Androidはランタイム中にパフォーマンスを向上させるためにインストール中にアプリの一部をキャッシュすることが好きであることがわかりました。アプリがアンドロイドにキャッシュされないようにする方法

Androidアプリからアプリをキャッシュできないようにする手段はありますか?

私のウェブサイトからアプリを共有していて、ユーザーはアプリを手動でインストールして更新します。私のアプリケーションを更新するとすぐに、いくつかのアクティビティとコードパーツがデバイスにキャッシュされているようです。

+0

「一部のアクティビティとコード部品がキャッシュされているようです」とはどういう意味ですか? –

+0

私の同僚が私のアプリをインストールする場合、彼はインストールしたバージョンで置き換えられたレイアウトとアクティビティを取得します。だからアプリケーションは、表示するために古いデータを使用するようです。 – Snickbrack

+0

更新するたびにキャッシュをクリアできますか? –

答えて

2

更新する前に、またはアプリケーションを閉じる前に毎回キャッシュを削除することができます。 ?あなたはおそらく更新またはアプリケーションが閉じるように起こっているキャッシュをクリアするために、onStop()メソッドをオーバーライドする前にキャッシュを(クリアしたいとき

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

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

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

コールTrimcache

+0

私はこのアプローチを試しているとうまくいけば、私は私のアプリに必要なもの。おかげで – Snickbrack

+0

私はそれがどのように動作するか教えて! –

+0

それはうまくいったのですか? –

0
: コードは、キャッシュをクリアします。

あなたがあなたのアプリをアップデートしていないときにキャッシュの問題があるかもしれません。

あなたがあなたのアプリケーションをアップグレードするときにサーバーをフェッチするには、あなたはバージョン1をインストールするときにフェッチして作成しますputsBoolean(version, true)バージョン== "1"。バージョン2がインストールされている場合は、フェッチが発生し、次にputsBoolean(version, true)を設定するfalseが検出されますが、この場合はバージョン== "2"となります。

更新時に異なる意味を持つ情報を再利用する場合、解決策は情報をキャッシュの別の部分に保存するため、情報を表示する準備ができていないアクティビティには送信されません。

それ以外の場合、@ jordy-dieltjensによる解決策は良いと思われます。

関連する問題