onCreate()方法如何运行?

时间:2018-10-06 13:19:31

标签: android oncreate

public class MainActivity extends AppCompatActivity {

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


    }
}

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

如果可以在该代码中运行onCreate方法,我认为应该有一个类似 onCreate();

2 个答案:

答案 0 :(得分:2)

我们总是可以覆盖这些功能并添加更多功能,但是问题是,当没有人调用这些功能时,这些功能将如何自动调用?我们尚未编写任何代码来调用它们。

这是回叫功能概念的出现。

回调的概念是在另一个类中的某些工作完成时通知一个类同步/异步。有人称其为好莱坞原则:“不要给我们打电话,我们给您打电话”。

这是一个例子:

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);
}

A类调用B类以在线程中完成一些工作。如果线程完成了工作,它将通过回调通知Class A并提供结果。因此,无需进行轮询或其他操作。只要有结果,您就会得到结果。

在Android中使用回调函数活动和片段之间。因为片段应该是模块化的,所以您可以在片段中定义一个回调以调用Activity中的方法。 copied from here

有关更多研究,请点击此链接:

link 1

link 2

答案 1 :(得分:1)

Activity Lifecycle期间调用onCreate方法。 The docs关于此方法状态

  

您必须实现此回调,该回调在系统首次创建活动时触发

因此,此方法的要点是让您初始化刚创建时需要针对您的活动进行的所有操作,然后调用super将其传播到其超类,从而允许他们执行其初始化。顺序也是如此。您不应该自己调用此方法。