2016-10-13 5 views
2

私は14日間と言うと、画像をキャッシュする必要があります。いくつかのWebサービスでは、私はExpiresActive OnExpiresDefault "access plus 14 days"でこれを行うためにApacheを設定します。数日間アンドロイド上に画像をキャッシュする

アンドロイドでこれを行うことは可能ですか?もちろん、私は電話機のストレージに画像を保存することができますが、それは私が探している解決策ではありません。

article (Caching Bitmaps)を読んでいますが、LruCacheを使用して、finish()を呼び出すと、キャッシュが破壊されます。紛れていますか?

携帯電話のストレージにファイルを保存する以外の解決策がありますか?

答えて

0

だから最終的に私はそれが私はbase64で画像を文字列といくつかのJSONを持って

の仕組みSharedPreferencesFile

を使用して、それを解決しました。そして、私はこれらの値を7日間保存する必要があります。そこで私はjsonをFileに書き込み、保存し、日付文字列(作成日)をSharedPreferencesに入れます。

  1. 日が期限切れ
  2. 期限が切れた場合、ユーザーはSP
  3. チェックから活動
  4. 取得日を開く - HTTPリクエスト
  5. から新しいJSONを取得作る期限切れ! - JSONファイルが
  6. を存在するかどうかを確認します
  7. 存在する - ファイルからjsonをロードする
  8. !存在する - http要求から新しいjsonを取得してファイルに保存し、作成日を更新する

これが正しい解決策であるかどうかはわかりませんが、それは私には役立ちます。

+0

良い分析。しかし、私は、共有優先度 - 日付として保存しない方が良いと思います。 – RoCk

1

あなたが持っているオプションはUniversalImageLoaderです。これで、あなたは車輪を再発明する必要はありません。

DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true).cache.build(); 
ImageLoader.getInstance().displayImage(url, iv, options, 
       new SimpleImageLoadingListener() { 
... 
} 

cacheOnDisk(true)などの他のオプションもあります。キャッシュ機構の特定の日数が必要な場合でも、これは問題の究極の解決策ではないかもしれません。あなたがSync Adapterを使用するため

EDIT

もう一つの良い選択肢です。残念ながら、これはかなり長い話題なので、私が提供したリンクに従ってください。それを使用するには、ContentProviderを作成してから、AbstractThreadedSyncAdapterを実装するクラスを作成する必要があります。

+0

お返事ありがとうございますが、私は時間を指定する必要があります... – kristyna

+0

私はあなたに別のオプションを与えるために編集しました。 – user1506104

+0

ご清聴ありがとうございました:)定期的なビットマップ更新の話題は素晴らしいですが、キャッシングは解決しません...とにかく+1についてはこれまで聞いたことがないので、強力なツールのように見えます。 – kristyna

関連する問題