Способ, которым это работает, довольно интересен и дает некоторые ключевые сведения о модели времени выполнения Android.Первое, что я бы порекомендовал посмотреть - это Внутренние компоненты Dalvik VM , если вы планируете делать какие-то серьезные системные вещи с Android.(Хотя, очевидно, он старый.) Теперь, когда менеджер пакетов Android получает намерение, требующее запуска нового приложения, он разветвляет новую виртуальную машину из уже запущенного процесса zygote .Это в основном методика, которая позволяет системе получить много хороших свойств памяти (совместное использование отображаемых страниц и т. Д.).Затем система загружает (потенциально предварительно оптимизированный и проверенный) файл для загрузки, чтобы vm мог начать его выполнение.Вы должны прочитать этот документ, который расскажет вам немного о том, как это работает.(Возможно, этот поток также поможет.) Имейте в виду, что, поскольку все системы разные, например, если вы работаете на новой архитектуре, вы не получите поддержку JIT, если не напишите ее явно.!- вы не можете точно знать , как Dalvik будет загружать код для запуска вашего приложения.