Вопрос по android, mobile – точка входа приложения для Android

7

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

Ваш Ответ

4   ответа
0

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

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

6

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

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded dacongy
1

Я сам этого не знаю, но звучит интересный вопрос.Это код это запускает новыйActivity и следуя коду, выв конечном итоге в коде 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 проект

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded dacongy
Error: User Rate Limit Exceeded./frameworks/base/core/java/android/app/ActivityThread.java, ./frameworks/base/core/java/android/os/Looper.java, ./frameworks/base/core/java/android/app/ActivityThread.java, ./frameworks/base/core/java/android/os/Message.java, ./frameworks/base/core/java/android/os/Handler.javaError: User Rate Limit Exceeded dacongy
7

Первая «запись» точка - это класс приложения, как указал Кингстон.

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

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

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]  
Error: User Rate Limit Exceededsource.android.com/source/initializing.html
Error: User Rate Limit Exceeded dacongy
Error: User Rate Limit Exceededstackoverflow.com/questions/9741293/…

Похожие вопросы