Compartilhar via


HttpResponseCache Classe

Definição

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

[Android.Runtime.Register("android/net/http/HttpResponseCache", DoNotGenerateAcw=true)]
public sealed class HttpResponseCache : Java.Net.ResponseCache, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable
[<Android.Runtime.Register("android/net/http/HttpResponseCache", DoNotGenerateAcw=true)>]
type HttpResponseCache = class
    inherit ResponseCache
    interface ICloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Herança
HttpResponseCache
Atributos
Implementações

Comentários

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. Essa classe suporta java.net.HttpURLConnection e javax.net.ssl.HttpsURLConnection; não há cache fornecido pela plataforma para DefaultHttpClient ou AndroidHttpClient. A instalação e as instâncias são thread safe.

<h3>Instalando um cache< de resposta HTTP/h3 Habilite> o cache de todas as solicitações HTTP do aplicativo instalando o cache na inicialização do aplicativo. Por exemplo, esse código instala um cache de 10 MiB no android.content.Context#getCacheDir() application-specific cache directory sistema de arquivos}:

{@code
              protected void onCreate(Bundle savedInstanceState) {
                  ...

                  try {
                      File httpCacheDir = new File(context.getCacheDir(), "http");
                      long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
                      HttpResponseCache.install(httpCacheDir, httpCacheSize);
                  } catch (IOException e) {
                      Log.i(TAG, "HTTP response cache installation failed:" + e);
                  }
              }

              protected void onStop() {
                  ...

                  HttpResponseCache cache = HttpResponseCache.getInstalled();
                  if (cache != null) {
                      cache.flush();
                  }
              }}

Esse cache removerá as entradas conforme necessário para evitar que seu tamanho exceda 10 MiB. O melhor tamanho de cache é específico do aplicativo e depende do tamanho e da frequência dos arquivos que estão sendo baixados. Aumentar o limite pode melhorar a taxa de acertos, mas também pode apenas desperdiçar espaço no sistema de arquivos!

Para alguns aplicativos, pode ser preferível criar o cache no diretório de armazenamento externo. <strong>Não há controles de acesso no diretório de armazenamento externo, portanto, ele não deve ser usado para caches que possam conter dados privados.</strong> Embora muitas vezes tenha mais espaço livre, o armazenamento externo é opcional e— mesmo que disponível— pode desaparecer durante o uso. Recupere o diretório de cache externo usando android.content.Context#getExternalCacheDir()o . Se esse método retornar null, seu aplicativo deverá retornar para não armazenar em cache ou em cache em armazenamento não externo. Se o armazenamento externo for removido durante o uso, a taxa de acertos do cache cairá para zero e as leituras contínuas do cache falharão.

A liberação do cache força seus dados para o sistema de arquivos. Isso garante que todas as respostas gravadas no cache serão legíveis na próxima vez que a atividade for iniciada.

<h3>Otimização de cache</h3> Para medir a eficácia do cache, essa classe rastreia três estatísticas: <ul><li><strong#getRequestCount() Request Count:></strong> o número de solicitações HTTP emitidas desde que esse cache foi criado. <li><forte>#getNetworkCount() Network Count:</forte> o número de solicitações que exigiam o uso da rede. <li><strong>#getHitCount() Hit Count:</strong> o número de solicitações cujas respostas foram atendidas pelo cache. </ul> Às vezes, uma solicitação resultará em um acerto de cache condicional. Se o cache contiver uma cópia obsoleta da resposta, o cliente emitirá um GETarquivo . O servidor enviará a resposta atualizada, se tiver sido alterada, ou uma resposta curta 'não modificada', se a cópia do cliente ainda for válida. Essas respostas incrementam a contagem de rede e a contagem de acertos.

A melhor maneira de melhorar a taxa de acertos do cache é configurando o servidor Web para retornar respostas em cache. Embora esse cliente honre todos os cabeçalhos de cache HTTP/1.1 (RFC 2068), ele não armazena em cache respostas parciais.

<h3>Forçar uma resposta< de rede/h3> Em algumas situações, como depois que um usuário clica em um botão 'atualizar', pode ser necessário ignorar o cache e buscar dados diretamente do servidor. Para forçar uma atualização completa, adicione a no-cache diretiva:

{@code
                    connection.addRequestProperty("Cache-Control", "no-cache");
            }

Se for necessário apenas forçar uma resposta em cache a ser validada pelo servidor, use a opção mais eficiente max-age=0 :

{@code
                    connection.addRequestProperty("Cache-Control", "max-age=0");
            }

<h3>Forçar uma resposta< de cache/h3> Às vezes, você vai querer mostrar recursos se eles estão disponíveis imediatamente, mas não de outra forma. Isso pode ser usado para que seu aplicativo possa mostrar algo enquanto aguarda o download dos dados mais recentes. Para restringir uma solicitação a recursos armazenados em cache localmente, adicione a only-if-cached diretiva:

{@code
                try {
                    connection.addRequestProperty("Cache-Control", "only-if-cached");
                    InputStream cached = connection.getInputStream();
                    // the resource was cached! show it
                } catch (FileNotFoundException e) {
                    // the resource was not cached
                }
            }

Esta técnica funciona ainda melhor em situações em que uma resposta obsoleta é melhor do que nenhuma resposta. Para permitir respostas obsoletas em cache, use a max-stale diretiva com o máximo de desligamento em segundos:

{@code
                    int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale
                    connection.addRequestProperty("Cache-Control", "max-stale=" + maxStale);
            }

<h3>Trabalhando com versões< anteriores/h3> Esta classe foi adicionada no Android 4.0 (Ice Cream Sandwich). Use o reflexo para habilitar o cache de resposta sem afetar as versões anteriores:

{@code
                  try {
                      File httpCacheDir = new File(context.getCacheDir(), "http");
                      long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
                      Class.forName("android.net.http.HttpResponseCache")
                              .getMethod("install", File.class, long.class)
                              .invoke(null, httpCacheDir, httpCacheSize);
                  } catch (Exception httpResponseCacheNotAvailable) {
                  }}

Documentação Java para android.net.http.HttpResponseCache.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Propriedades

Class

Retorna a classe de tempo de execução deste Object.

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
HitCount

Retorna o número de solicitações HTTP cuja resposta foi fornecida pelo cache.

Installed

Retorna o , atualmente instalado HttpResponseCacheou null se não houver nenhum cache instalado ou se não for um HttpResponseCachearquivo .

JniIdentityHashCode

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
JniPeerMembers

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

NetworkCount

Retorna o número de solicitações HTTP que exigiram que a rede fornecesse uma resposta ou validasse uma resposta armazenada em cache localmente.

PeerReference

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
RequestCount

Retorna o número total de solicitações HTTP que foram feitas.

ThresholdClass

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

(Herdado de ResponseCache)
ThresholdType

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

(Herdado de ResponseCache)

Métodos

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Close()

Desinstala o cache e libera todos os recursos ativos.

Delete()

Desinstala o cache e exclui todo o conteúdo armazenado.

Dispose()

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
Dispose(Boolean)

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
Equals(Object)

Indica se algum outro objeto é "igual" a este.

(Herdado de Object)
Flush()

Forçar operações em buffer para o sistema de arquivos.

Get(URI, String, IDictionary<String,IList<String>>)

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
Install(File, Int64)

Cria um novo cache de resposta HTTP e o define como o cache padrão do sistema.

JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
MaxSize()

Retorna o número máximo de bytes que esse cache deve usar para armazenar seus dados.

Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
Put(URI, URLConnection)

Permite que o manipulador de protocolo armazene dados em cache após recuperar recursos.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle.

(Herdado de Object)
Size()

Retorna o número de bytes que estão sendo usados atualmente para armazenar os valores nesse cache.

ToArray<T>()

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em notificado</em> ou <em>interrompido</em>>.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

IJavaPeerable.Disposed()

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
IJavaPeerable.Finalized()

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
IJavaPeerable.JniManagedPeerState

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

(Herdado de Object)

Métodos de Extensão

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada em tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

GetJniTypeName(IJavaPeerable)

Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda.

Aplica-se a