Почему приложение и его ресурсы остаются в памяти после выхода из Android? - PullRequest
3 голосов
/ 16 ноября 2011

У меня есть простое приложение Hello World

public class TestLeaksOnFinish extends Activity  
{
    static int ctr = 0;
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    TextView t = new TextView(this);
    t.setText("Hello World! "+ctr++);
    setContentView(t);          
    }   
}

Когда я запускаю это несколько раз, каждый раз, после чего нажимаю BACK, я вижу, что ctr увеличивается каждый раз, указывая на то, что Activity не убивается полностью послеBACK.

Это также подтверждается сбросом файла HPROF в DDMS после нажатия кнопки BACK.
Этот файл все еще содержит мой класс активности TestLeaksOnFinish.

Может кто-нибудь объяснить, почему это действие все еще присутствует в дампе кучи после нажатия НАЗАД?

Когда я перечисляю входящие ссылки, я получаю следующее screenshot from DDMS

1 Ответ

11 голосов
/ 16 ноября 2011

В действиях Android их не убивают, их просто переносят в фоновый режим. Так работает Android, вы не можете убить приложение или, по сути, не можете выйти, как вы знаете. Он просто останется в фоновом режиме и в памяти.1001 *

Когда у вас заканчивается память, система начинает уничтожать процессы приложения в соответствии с приоритетом, который система отдает каждому приложению.

...