2012-11-06 16 views
11

muszę przetestować serializacji \ deserializacji stosowania w następnych przypadkach:Jak symulować zabijania aplikacji Android GC

  • aplikacja była w tle dużo czasu (tryb bezczynności) i został zabity przez GC;
  • aplikacja była w tle i została zabita przez GC z powodu braku zasobów (pamięci \ cp);

Na niektórych urządzeniach można go symulować, uruchamiając 1-2 gry. Ale na czterordzeniowych urządzeniach z pamięcią 1GB jest bardzo ciężko z 4-10 ciężkimi grami i zajmuje dużo czasu.

staram się realizować jakieś demo gdzie emulacji obciążenie zasobów:

  • tworzyć bitmapy tablice
  • tworzenia obiektów tablic
  • uruchomić wiele usług
  • launch wiele działań

Ale bez rezultatu, aplikacja nadal działa (nawet na starych urządzeniach) i moje demo jest rozbijane przez OutOfMemoryEx cepcja.

Jak mogę symulować duże obciążenie w aplikacji demonstracyjnej?

Dzięki!

+4

Istnieje opcja dewelopera w ustawieniu "Nie zachowuj aktywności", która ma na celu zniszczenie czynności, gdy tylko użytkownik ją opuści. – Ifor

+1

Mam tę opcję @Ifor wymienione na moim 4.0 Androida, ale na 2.3 myślę, że nie (uaktualniłem go) – HericDenis

+0

@Ifor, dzięki, ale to absolutnie inaczej. W przypadku, gdy opcja "Nie kontynuuj działań" zostanie wywołana w aplikacji Destroy, aplikacja zostanie zamknięta normalnie (podobnie jak zwykłe wyjście z aplikacji). – nister

Odpowiedz

2

Cóż, „GC” jest rzeczywiście nadużywane „Out of memory killer” i że zabija aplikacje jakby sygnałem 9. W urządzeniu ukorzenionych powinny być w stanie powołać kill(1) polecenie skorupach kill(2) funkcję z biblioteki natywnej (Nie jestem pewien, czy jest to związane z Javą) i zabić aplikację, kiedy tylko chcesz.

System zwykle wywołuje onStop w Activity, gdy przechodzi w tło, a następnie zabija aplikację bez dodatkowego ostrzeżenia i bez szansy na reakcję. Jeśli więc opuścisz aplikację i ją zabijesz, odpowiednia symulacja zostanie zabita przez OOM.

+0

To wygląda na prawdę i myślałem tak samo. Ale jeśli sprawdzisz callbacki i logi aktywności, zobaczysz zupełnie inne zachowanie. Kiedy zabijasz aplikację z Menedżera zadań, wygląda to tak, jak normalne wyjście z aplikacji (z OnDestroy i poprawnym zakończeniem). – nister

+2

@nister: Kiedy zabijesz go z Task Managera, może tak być. Ale pytanie brzmi, co się stanie, gdy aplikacja zostanie zabita z powodu braku pamięci. –

+0

Gdy Android zabija aplikację z powodu ograniczenia pamięci, a następnie aplikacja jest otwierana przez użytkownika, ostatnia czynność zostaje otwarta. Podczas ręcznego zabijania aplikacji przywracane jest tylko główne działanie. –

0

Zainstaluj dowolny moduł pamięci w sklepie Play. Zainstalowałem to: easymemorycleaner

po wyczyszczeniu pamięci. Twoja zmienna przechowywana w pamięci zniknie. Chyba że zapisałeś dane w Parceli. To będzie trwałe.

Powiązane problemy