7

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

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

  • 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
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceededsource.android.com/source/initializing.html

    от
  • Error: User Rate Limit Exceeded

    от dacongy
  • Error: User Rate Limit Exceeded

    от dacongy
  • Error: User Rate Limit Exceededstackoverflow.com/questions/9741293/…

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от dacongy
  • 6

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

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

  • 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]  
    

  • 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 проект

  • 0

    В основных программах Java нам нужен метод main ()

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

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