Encontrar lugares para colocar os dados em seus aplicativos para android
Dependendo dos requisitos do seu aplicativo Android, você pode precisar de armazenar dados em uma variedade de lugares. Por exemplo, se um aplicativo interage com arquivos de música e um usuário quiser reproduzi-los em mais de um programa de música, você tem que armazená-los em um local onde todos os aplicativos podem acessá-los.
Um aplicativo que precisa para armazenar dados sensíveis, tais como nomes de usuários criptografadas e detalhes de senha, não devem compartilhar dados - colocando-o em um ambiente seguro de armazenamento local é a melhor estratégia. Independentemente da sua situação, o Android oferece várias opções para armazenar dados.
Ver as suas opções de armazenamento
O ecossistema Android fornece vários locais onde os dados podem ser persistentes:
preferências compartilhadas: dados privados armazenados em pares chave-valor.
Armazenamento interno: Um local para salvar arquivos no dispositivo. Os arquivos armazenados no armazenamento interno são privados para a sua aplicação por padrão, e outras aplicações não pode acessá-los. (Nem pode o usuário, exceto usando o aplicativo.) Quando o aplicativo é desinstalado, os arquivos particulares serão excluídos também.
cache local: O diretório de dados interna para armazenamento em cache de dados em vez de armazená-lo persistentemente. arquivos em cache podem ser excluídos a qualquer momento. Você usa o getCacheDir () método, disponível nos objetos de atividade ou contexto em Android.
Se você armazenar dados em um diretório de dados interno eo espaço de armazenamento interno começa a escassear, Android pode apagar arquivos para recuperar espaço. Não confie em Android para apagar seus arquivos para você embora! Você deve excluir o cache arquivos si mesmo para ficar dentro de um limite razoável (por exemplo, cerca de 1 MB) de espaço consumido no diretório cache.
Armazenamento externo: Cada dispositivo Android suporta armazenamento compartilhado externo para arquivos - ou armazenamento removível, como um cartão Secure Digital (SD card) ou armazenamento não-removível. Os arquivos salvos para armazenamento externo são público (Qualquer pessoa ou aplicação pode alterá-los), e nenhum nível de segurança é aplicada.
Os usuários podem modificar arquivos ou usando um aplicativo gerenciador de arquivos ou conectar o dispositivo a um computador através de um cabo USB e montar o dispositivo como armazenamento externo. Antes de trabalhar com armazenamento externo, verifique o estado atual do armazenamento externo com o Meio Ambiente objeto, usando uma chamada para getExternalStorageState () para verificar se a mídia está disponível.
O método principal é uma chamada no Contexto objeto - getExternalFilesDir (). Esta chamada leva um parâmetro de cadeia como uma chave para ajudar a definir o tipo de mídia que você está salvando, como ringtones, músicas ou fotos.
banco de dados SQLite: A implementação leve banco de dados SQL que está disponível em várias plataformas (incluindo Android, iPhone, Windows, Linux e Mac) e totalmente suportadas pelo Android. Você pode criar tabelas e executar consultas SQL contra as tabelas em conformidade. Você implementar um banco de dados SQLite neste capítulo para lidar com a persistência das tarefas no aplicativo Tarefas.
Provedor de conteúdo: A “wrapper” em torno de outro mecanismo de armazenamento. Um provedor de conteúdo é usado por um aplicativo para ler e gravar dados de aplicativos que podem ser armazenados nas preferências, arquivos ou bancos de dados SQLite, por exemplo. Provedores de conteúdo são inteligentes na medida em que também manter o controle de quando os dados são modificados, e automaticamente notificar os ouvintes a mudanças.
Conexão de rede: (Também conhecido como armazenamento remoto.) Qualquer fonte de dados remota que você tem acesso. Por exemplo, como Flickr expõe uma API que permite armazenar imagens em seus servidores, o aplicativo pode trabalhar com Flickr para armazenar imagens. Se o seu aplicativo funciona com uma ferramenta popular na Internet (tais como Twitter, Facebook, ou Basecamp), o aplicativo pode enviar informações via HTTP - ou qualquer outro protocolo que considerem necessárias - para APIs de terceiros para armazenar os dados.
Access Storage quadro: A SAF torna mais simples para os usuários a navegar e abrir documentos, imagens e outros arquivos em todos os seus provedores de armazenamento de documentos preferenciais. Um padrão, easy-to-use interface permite que os usuários procurem arquivos e Recentes de acesso de uma forma consistente em aplicativos e provedores. Por exemplo, você pode usar o SAF para fornecer acesso a um provedor de armazenamento em nuvem remota de documentos.
Escolhendo uma opção de armazenamento
Os vários locais de armazenamento de dados oferecem bastante a paleta de opções. No entanto, você tem que descobrir qual deles usar, e você pode até querer usar múltiplo mecanismos de armazenamento.
Suponha que seu aplicativo se comunica com uma API remoto de terceiros, tais como Twitter e comunicação de rede é lento e menos de 100percent confiável. Você pode querer guardar uma cópia local de todos os dados desde a última atualização do servidor, para permitir que o aplicativo permaneça utilizável (de alguma forma) até a próxima atualização. Quando você armazenar os dados em uma cópia local de um banco de dados SQLite e o usuário inicia uma atualização, as novas atualizações atualizar o banco de dados SQLite com os novos dados.
Se o seu aplicativo se baseia exclusivamente em comunicação de rede para recuperação e armazenamento de informação, usar o banco de dados SQLite (ou qualquer outro mecanismo de armazenamento) para fazer a aplicação permanecer utilizável quando o usuário não pode se conectar a uma rede e deve trabalhar offline - uma ocorrência comum.
Se o seu aplicativo não funciona quando uma conexão de rede não estiver disponível, é provável que você receber críticas negativas na Google Play Store -, bem como pedidos de funcionalidades para tornar o seu trabalho aplicativo offline. Esta estratégia introduz um pouco de trabalho extra para o processo de desenvolvimento de aplicações, mas vale a pena o seu tempo de dez vezes na experiência do usuário.