Нужен пример HttpResponseCache в Android

Привет, я пытаюсь использовать HttpResponseCache, представленный в Android 4. Документы четко говорят о том, как установить кеш, но я совершенно не понимаю, как кешировать изображения, загруженные из сети. Раньше я использовал DiskLruCache для их кеширования.. Может ли кто-нибудь указать мне на некоторые примеры рабочего кода, где использовался HttpResponseCache..

Изменить :-Может ли кто-нибудь сказать мне, что я здесь делаю неправильно:-

MainActivity.java
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
    final File httpCacheDir = new File(getCacheDir(), "http");
    try {
        Class.forName("android.net.http.HttpResponseCache")
           .getMethod("install", File.class, long.class)
           .invoke(null, httpCacheDir, httpCacheSize);
        Log.v(TAG,"cache set up");
    } catch (Exception httpResponseCacheNotAvailable) {
        Log.v(TAG, "android.net.http.HttpResponseCache not available, probably because we're running on a pre-ICS version of Android. Using com.integralblue.httpresponsecache.HttpHttpResponseCache.");
        try{
            com.integralblue.httpresponsecache.HttpResponseCache.install(httpCacheDir, httpCacheSize);
        }catch(Exception e){
            Log.v(TAG, "Failed to set up com.integralblue.httpresponsecache.HttpResponseCache");
        }
    }
    TheMainListFrag gf=(TheMainListFrag) getSupportFragmentManager().findFragmentByTag("thelistfrags");
    if(gf==null){
        gf=TheMainListFrag.newInstance();
        FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.thelefty, gf,"thelistfrags");
        ft.commit();
    }
}

Затем в загрузчике TheMainListFrag я делаю следующее:-

public ArrayList<HashMap<String,String>> loadInBackground() {
    String datafromServer = null;
    ArrayList<HashMap<String,String>> al = new ArrayList<HashMap<String,String>>();
    try {
        String url = "someurl";
        HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();

        urlConnection.setRequestProperty("Accept", "application/json");
        InputStream is = new BufferedInputStream(urlConnection.getInputStream());
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
        datafromServer=sb.toString();
        Log.v("fromthread",datafromServer);
        // etc 
                    //etc

    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (Exception e) {
        Log.v("fromthread", e.getClass() + "--" + e.getMessage());
    }

    return al;
}

Когда я подключен к Интернету, он работает нормально, и в каталоге http -каталог кеша, указанный выше, я также могу видеть файлы. Но когда я не подключен к Интернету, данные отказываются загружаться.

Когда я загружаю изображения из сети, я вижу файлы кеша с именем.tmp, которые, как мне кажется, считаются грязными в соответствии с DiskLruCache.

Пожалуйста, дайте мне знать, если есть какая-либо другая информация, которую вы хотите, чтобы я предоставил

12
задан Jonik 31 October 2013 в 16:28
поделиться