0

Где находится main() в Android?

14

Я новичок в Android и изучал фреймворк, что побудило меня задать этот вопрос. Поскольку мы расширяем класс Activity в Android, предполагается, что где-то в Activity должен быть метод main или существует скрытый класс, который реализует Activity и содержит метод main.

Я искал повсюду, но не смог его найти. Было бы полезно, если кто-то смог бы дать ясное объяснение этому вопросу.

5 ответ(ов)

0

В классических Java-программах нам необходим метод main(), поскольку при выполнении байт-кода JVM ищет этот метод в классе и начинает выполнение с него.

В случае Android Dalvik Virtual Machine (после Android 5.0 DVM была заменена на Android Runtime) предназначена для поиска класса, который является подклассом Activity и который установлен как LAUNCHER. С этого класса начинается выполнение приложения с метода onCreate(), поэтому необходимость в методе main() отсутствует.

Для получения дополнительной информации посмотрите на цикл жизни Activity.

0

На самом деле метод main() в Android представляет собой класс android.app.ActivityThread. Этот метод создает основной (UI) поток для процесса ОС, настраивает Looper и запускает цикл обработки событий.

Android-фреймворк отвечает за создание и уничтожение процессов ОС, запуск приложений, а также старт активностей, сервисов и других компонентов. ActivityManager является частью Android-фреймворка и отвечает за координацию и управление различными компонентами.

Архитектура Android немного отличается от того, к чему вы, возможно, привыкли в обычных Java-приложениях. Основное отличие заключается в том, что все ваши компоненты (Activity, Service, BroadcastReceiver и т. д.) не обязательно работают в одном и том же процессе ОС или в одной виртуальной машине (VM). Возможна ситуация, когда компоненты одного приложения работают в разных процессах ОС, а также возможно, что компоненты разных приложений работают в одном и том же процессе ОС. В традиционной Java метод main() вызывается виртуальной машиной после создания процесса ОС и завершения инициализации виртуальной машины.

0

Android использует язык Java, но выполняет его с помощью модифицированной модели выполнения. Как уже упоминали другие, в каждом пакете есть манифест, в котором указывается точка входа. Рекомендуется посетить официальный сайт Android и пройти базовые/tutorials. Это поможет вам разобраться в процессе создания, развертывания и запуска приложения, а также в основах жизненного цикла приложения.

0

Метод onCreate() является одним из ключевых методов в жизненном цикле класса Activity в Android. Он вызывается, когда активити создается, и служит для инициализации компонентов интерфейса пользователя и выполнения любой другой необходимой настройки, такой как настройка баз данных или загрузка данных.

Для более подробной информации о жизненном цикле Activity, вы можете ознакомиться с официальной документацией по адресу: Android Activity.

В общем, жизненный цикл Activity включает такие методы, как onCreate(), onStart(), onResume(), onPause(), onStop() и onDestroy(), которые управляют состоянием активности и обеспечивают плавное взаимодействие пользователя с приложением.

0

Когда вы запускаете новый процесс для выполнения приложения или сервиса, в ActivityManagerService.java вы увидите следующий код:

final String entryPoint = "android.app.ActivityThread";

return startProcessLocked(hostingType, hostingNameStr, entryPoint, app, uid, gids,
                runtimeFlags, mountExternal, seInfo, requiredAbi, instructionSet, invokeWith,
                startTime);

Этот код в конечном итоге вызывает Process.start. Это аналогично стандартному поведению Java: вы передаете имя класса, и виртуальная машина создает новый процесс и выполняет метод main() из ActivityThread.java:

public static void main(String[] args) {
         ......
    Looper.loop();

    throw new RuntimeException("Main thread loop unexpectedly exited");
}

Метод main запускает действия, которые отправляют IPC сообщение для уведомления Activity Manager о том, что процесс был успешно запущен. После того как новое событие о запуске процесса было инициировано, Activity Manager уведомляет новый процесс, чтобы начать реальный процесс инициализации активности. Это включает создание класса Activity в соответствии с манифестом и вызов методов onCreate и т.д.

Здесь есть несколько ответов, которые совершенно неверны, но получили много голосов. Я надеюсь, что модераторы смогут это проверить.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь