onCreate() 方法如何 运行?

how is the onCreate() method run?

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    }
}

当我在 MyActivity.java 中看到这个基本源代码时, onCreate() 方法只是重写。但是当我 运行 应用程序时,我可以看到覆盖的方法 "onCreate()" 运行s。这怎么可能?

如果可以 运行 该代码中的 onCreate 方法,我认为应该有这样的代码 onCreate();

我们总是可以覆盖这些函数并向其添加更多,但问题是当没有人调用它们时,这些函数是如何自动调用的?我们还没有编写任何代码来调用它们。

这就是 回调函数 概念的用武之地。

回调的概念是在另一个 class 中的某些工作完成时通知 class 同步/异步。有人称之为好莱坞原则:"Don't call us we call you".

这是一个例子:

class A implements ICallback {
     MyObject o;
     B b = new B(this, someParameter);

     @Override
     public void callback(MyObject o){
           this.o = o;
     }
}

class B {
     ICallback ic;
     B(ICallback ic, someParameter){
         this.ic = ic;
     }

    new Thread(new Runnable(){
         public void run(){
             // some calculation
             ic.callback(myObject)
         }
    }).start(); 
}

interface ICallback{
    public void callback(MyObject o);
}

Class A 调用 Class B 以在线程中完成一些工作。如果 Thread 完成工作,它将通过回调通知 Class A 并提供结果。所以不需要轮询什么的。您将在结果可用时立即获得结果。

在Android中使用了回调f.e。在 Activity 和 Fragment 之间。因为 Fragments 应该是模块化的,所以你可以在 Fragment 中定义一个回调来调用 Activity 中的方法。 copied from here

如需更多研究,请关注此 link:

link 1

link 2

onCreate 方法在 Activity Lifecycle. The docs 期间被调用,关于此方法状态

You must implement this callback, which fires when the system first creates the activity

所以这个方法的目的是让你初始化任何特定于你的 activity 的东西,这些东西在第一次创建时需要完成,然后调用 super 将它传播到它的超类,允许他们也执行初始化序列。您不应该自己调用此方法。