Jak zatrzymać zabijanie aplikacji podczas snu?

11

Mam Droida 2. Mam długą, wymagającą dużych zasobów grę (dusze spektralne), które chciałbym pozostawić uruchomione, gdy nie korzystam z telefonu. Jeśli kliknę przycisk „Strona główna” Androida, aby wrócić do ekranu głównego, a następnie natychmiast ponownie uruchomię grę, będzie tam, gdzie skończyłem. To samo, jeśli wciśnę przycisk zasilania, aby spać, a następnie natychmiast włączę telefon, odblokuję i ponownie uruchom grę.

Jeśli zostawię go na jakiś czas (kilka godzin), to kiedy wrócę i uruchomię grę, zacznie się od nowa tak, jakby nigdy nie działała. W międzyczasie telefon nie był używany do niczego, chociaż synchronizacja jest włączona.

Moje pytanie jest dwojakie: w jaki sposób mogę uzyskać więcej informacji o tym, jakie aplikacje są zabijane, kiedy i dlaczego, oraz jak mogę je skonfigurować, aby ta aplikacja mogła nadal działać? Nie potrzebuję tego, aby ZROBIĆ cokolwiek w tle, chcę tylko, żeby nadal tam było, kiedy wrócę.

Znam koncepcję czyszczenia pamięci systemu Android, ponieważ jest ona potrzebna i nie wymaga zabójcy zadań, ale chcę, aby nie zabijała TEGO zadania, chyba że naprawdę go zakończę.

Jason Viers
źródło
Zakładam, że nie masz dostępu do faktycznego kodu?
Nanne
Prawidłowo, są to aplikacje o zamkniętym źródle zakupione w sklepie z aplikacjami.
Jason Viers

Odpowiedzi:

2

Jestem pewien, że nie jest to opcja w domyślnym projekcie Androida. Nigdy osobiście nie widziałem aplikacji do takich rzeczy, ponieważ większość ludzi chce, aby programy zostały zamknięte, aby utrzymać szybkość telefonu. To system Android zamyka nieużywane programy. Twórca aplikacji musiałby zaprojektować usługę, aby działała w tle lub była możliwa, jak zawsze w obliczeniach lub audio, aby system pomyślał, że program coś robi. To zjadłoby twoją baterię.

Mikołaj
źródło
Podczas gdy twoje pierwsze i trzecie zdanie są absolutnie poprawne, pozostałe nie.
Michael
2

Sugestia: użyj Tasker, aby wyłączyć limit czasu ekranu dla aplikacji. Może to uniemożliwić przejście do tła.

niespokojny
źródło
Rzucę okiem i wypróbuję, dzięki! Zanotuję każdy sukces lub porażkę.
Jason Viers
Mogę potwierdzić, że zmiana limitu czasu ekranu w Tasker NIE ochroni aplikacji przed zabiciem. Dziękuję za sugestię.
Jason Viers
1
Czekaj, czy to nie zapobiegnie wyłączeniu ekranu? W ten sposób marnujesz baterię?
Michael
2

Do pierwszej części twojego pytania;

jak mogę uzyskać więcej informacji o tym, które aplikacje są zabijane, kiedy i dlaczego?

Zestaw Android SDK zawiera krótkie podsumowanie dotyczące pamięci Android http://developer.android.com/guide/topics/fundamentals.html

Domyślnie każda aplikacja działa we własnym procesie Linux. Android uruchamia proces, gdy którykolwiek ze składników aplikacji musi zostać wykonany, a następnie zamyka proces, gdy nie jest już potrzebny lub gdy system musi odzyskać pamięć dla innych aplikacji.

Tak skutecznie system Android można podsumować jako programy do zabijania, gdy stwierdzi, że go nie używasz (kliknąłem przycisk „zamknij” w aplikacji) lub gdy zabrakło zasobów. Na przykład, jeśli masz 512 MB pamięci RAM, a 10 za darmo i uruchomisz aplikację, która potrzebuje 12, spróbuje określić najmniej używaną aplikację, z której może pobrać 12.

Zwykle robi to całkiem dobrze (przynajmniej z mojego doświadczenia). Możesz być w stanie wrócić do domu ze swojej gry i zrobić kilka rzeczy, ale po trzecie, eksmisja gry. Pamiętaj, w szczególności, w jakie gry wymagają dużych zasobów, więc prawdopodobnie zabije tę aplikację wcześniej niż później.

Powodem tego, że z czasem znika, jest prawdopodobnie proces synchronizacji, który próbuje się uruchomić i konkurować o zasoby. Strony pamięci aplikacji były w tym momencie bardzo rzadko odwiedzane, więc jest to uczciwa gra na każde odzyskanie pamięci, które zdaniem systemu operacyjnego jest konieczne.

Na twoje drugie pytanie;

jak mogę to skonfigurować, aby ta aplikacja mogła nadal działać?

Nie używam zabójcy zadań, ale jestem pewien, że dobre (wydaje się, że ATK jest liderem https://market.android.com/details?id=com.rechild.advancedtaskkiller&feature=search_result ) mają wyjątek lista. Możliwe jest dodanie białej listy do wybranej gry i umieszczenie na czarnej liście innych procesów.

Nie znam też tej gry, więc nie jestem pewien, jakie są możliwości automatycznego zapisywania. Mam nadzieję, że pomogłem.

Krondor
źródło
1

Jak uzyskać więcej informacji o tym, jakie aplikacje są zabijane i dlaczego?

Możesz podłączyć telefon do adb ; a następnie włącz logcat ; zapisywanie danych wyjściowych do pliku.
W pliku dziennika będziesz mieć mnóstwo informacji; wyszukując swoją nazwę aplikacji; możesz dowiedzieć się, kiedy zostanie zabity.

Co możesz zrobić, aby zapobiec zatrzymaniu go przez system Android?
Nie wiem; mam nadzieję, że rAndy odpowiedź zadziała.
Jednak; Skontaktuj się z programistą i przekażę mu problem, ponieważ powinien on / ona mieć najłatwiejszy czas, aby go naprawić

bbaja42
źródło
Już miałem wspomnieć o rozwiązaniu logcat. Po prostu chcę dodać, że również szukasz ActivityManagera (jest to wewnętrzny „zabójca zadań” na androidach) .Nie możesz powstrzymać Androida przed zabijaniem aplikacji. Idea Androida polega na tym , że jeśli proces aplikacji zostanie całkowicie zabity, aplikacja powinna mieć możliwość przywrócenia poprzedniego stanu. Więc deweloperzy aplikacji trzeba się upewnić, że nie rozpocząć grę od początku.
Flow