Intereting Posts
Как реализовать покупку в приложении с помощью плагина Cordova? Скажите, когда открывается клавиатура с «adjustNothing» Travis ci build failing – причина: пространство PermGen Я занимаюсь «первым приложением» для разработчиков Android, но приложение не будет запускаться URL Google Play испортил диалог общего доступа к Facebook Как перезапустить прослушивание снова после того, как RecognitionListener возьмет ошибку ERROR_RECOGNIZER_BUSY Dagger2: компонент не может зависеть от нескольких компонентов с областью Не удалось обновить версию с версии 2.1.1 до 2.2 в студии Android. SMS Broadcastreceiver не вызывается, когда установлен GO SMS Pro Android начинает планировать просмотр apk Как отключить резервную копию SSLv3 с помощью okhttp Не удалось создать PlusClient Подключение базы данных mysql с использованием мыльных веб-сервисов в android Что такое addFooterView для GridView? Android Родственный сбой в /system/lib/libskia.so (обработка Bitmap)

Точка входа приложения для Android

Когда мы разрабатываем приложение для Android, мы всегда начинаем с onCreate() основной активности. Очевидно, что есть некоторые инициализации, которые необходимо выполнить перед вызовом функции onCreate() . Мой вопрос: какова точка входа (или main метод) приложения Android? Что делает Dalvik VM в самом начале (т. Е. Когда он заканчивает инициализацию самостоятельно и собирается передать управление в приложение)? Где я могу найти код этого main ?

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

Однако самой простой задачей, чтобы получить первую начальную точку, является проверка стека при отладке onCreate.

Вы можете проверить Instrumentation, этот звук походит на то, что вы хотите.

http://developer.android.com/reference/android/app/Instrumentation.html

 MainActivity.onCreate(Bundle) line: 12 Instrumentation.callActivityOnCreate(Activity, Bundle) line: 1047 ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2627 ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2679 ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 125 ActivityThread$H.handleMessage(Message) line: 2033 ActivityThread$H(Handler).dispatchMessage(Message) line: 99 Looper.loop() line: 123 ActivityThread.main(String[]) line: 4627 Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] Method.invoke(Object, Object...) line: 521 ZygoteInit$MethodAndArgsCaller.run() line: 868 ZygoteInit.main(String[]) line: 626 NativeStart.main(String[]) line: not available [native method] 

Вы должны расширить класс Application и переопределить метод onCreate.

Для справки: класс приложения

Я сам этого не знаю, но это звучит интересный вопрос. Это код, который запускает новое действие и после кода, вы попадете в код JNI

 public void startActivityForResult(Intent intent, int requestCode) { if (mParent == null) { Instrumentation.ActivityResult ar = mInstrumentation.execStartActivity( this, mMainThread.getApplicationThread(), mToken, this, intent, requestCode); if (ar != null) { mMainThread.sendActivityResult( mToken, mEmbeddedID, requestCode, ar.getResultCode(), ar.getResultData()); } if (requestCode >= 0) { // If this start is requesting a result, we can avoid making // the activity visible until the result is received. Setting // this code during onCreate(Bundle savedInstanceState) or onResume() will keep the // activity hidden during this time, to avoid flickering. // This can only be done when a result is requested because // that guarantees we will get information back when the // activity is finished, no matter what happens to it. mStartedActivity = true; } } else { mParent.startActivityFromChild(this, intent, requestCode); } } 

Исходный код Android доступен, но немного сложно получить его, потому что он плохо документирован. Вам нужно будет установить repo а затем загрузить проект framework/base

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

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