2011-09-09 17 views
6

Kilka oddzielnych, ale pokrewnych pytań dotyczących miejsca przechowywania pobranych treści w mojej aplikacji.Android - Gdzie przechowywać pobraną zawartość, pamięć wewnętrzną a pamięć zewnętrzną?

Mam aplikację, która pobiera zawartość z serwera centralnego. Ta zawartość jest czasem treścią premium lub przynajmniej treścią, której nie chce, aby wydawca swobodnie się rozpowszechniał. Rozumiem, że "zewnętrzna" pamięć jest łatwo dostępna, podczas gdy "wewnętrzna" pamięć jest chroniona, chyba że telefon jest zrootowany.

Jeśli aplikacja jest zainstalowana na karcie SDCARD (tak jak moja jest skonfigurowana), to czy "wewnętrzna" pamięć fizycznie znajduje się również na karcie SDCARD? Zatem jeśli moja zainstalowana przez SDCARD aplikacja pobierze, powiedzmy, 100 MB zawartości do pamięci wewnętrznej, to czy faktycznie trafia do karty SDCARD, czy też kończy się na fizycznym wewnętrznym urządzeniu urządzenia?

Jeśli aplikacja jest zainstalowana na karcie SDCARD, a magazyn "wewnętrzny" z pobraną zawartością znajduje się na karcie SDCARD, to czy jest fizycznie przechowywany w otwartym formacie lub czy jest zaszyfrowany? Wydaje mi się, że pamiętam, że aplikacja przechowywana na karcie SDCARD jest zaszyfrowana. Czy dotyczy to również "wewnętrznego" magazynu?

(skreślony pytanie o przechowywanie plików w jednym katalogu, co Context.getDir() oznacza, że ​​system katalogu mogą być tworzone i utrzymywane w pamięci wewnętrznej)

Czy istnieje lepsze podejście?

Odpowiedz

4

Czy kilka eksperymentów i doszedł do następujących wniosków z Androida 2.2 na Motorola Droid 2:

  • Gdy aplikacja jest zainstalowana/przeniesiona do sdcard następnie jest on przechowywany jako plik .asec w ukryty katalog /.android_secure na karcie SDCARD. To jest zaszyfrowany i skompresowany plik.
  • Gdy aplikacja tworzy pliki danych w "pamięci wewnętrznej", są one przechowywane w pamięci wewnętrznej urządzenia, a nie na karcie SDCARD.
  • Okno dialogowe Ustawienia/Zarządzanie aplikacjami dla aplikacji ma wartość "Dane" - jest to ilość danych używanych przez aplikację w pamięci wewnętrznej, czyli w pamięci wewnętrznej nie w SDCARD
  • pamięć zewnętrzna kończy się na SDACRD w katalogu/Android/data
  • Czyszczenie danych z okna dialogowego Ustawienia/Zarządzanie aplikacjami rzeczywiście usuwa wszystko, co oznacza, że ​​zainstalowana aplikacja musi mieć odpowiednią wiedzę/logikę do obsługi sytuacja "brak danych".

Moja aplikacja to aplikacja do pobierania plików. Co to wszystko oznacza dla mnie jest to, że:

  • Jest mało realna wartość w przechowywaniu moją małą aplikację na sdcard, zważywszy, że większość przechowywania będzie zużywać na telefon będzie w pamięci wewnętrznej urządzenia. Poza tym, że zawsze dobrze jest pozwolić aplikacji na zainstalowanie na karcie SDCARD.
  • Pakiet instalacyjny musi być w stanie odzyskać pobraną zawartość użytkownika, jeśli została wyczyszczona przez użytkownika.
  • Koncepcja przechowywania unique installation id w pamięci wewnętrznej działa dobrze, dopóki użytkownik nie usunie danych aplikacji, a tym samym nie wyliczy nowego identyfikatora instalacji.Tak więc, aby móc zapamiętać, jaka zawartość została pobrana na urządzenie, wymagane jest konto użytkownika na centralnym serwerze, które użytkownik tworzy/loguje, gdy tylko aplikacja zaczyna się od zera.
Powiązane problemy