【问题标题】:how is the onCreate() method run?onCreate() 方法是如何运行的?
【发布时间】:2018-10-06 13:19:30
【问题描述】:
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();

【问题讨论】:

  • 它的工作方式是由于一个Activity组件的生命周期,魔术是由super.onCreate(savedInstanceState)完成的
  • @AseemSharma 我还不明白。因为我认为 super.onCreate(savedInstanceState) 来自超类 AppCompatActivity
  • super.onCreate(savedInstanceState) 是实干家。如果您了解 OOP,那么您应该得到它。
  • 它从您在 Manifest 中使用 Intent Filters action_MAIN 和 category_LAUNCHER 注册 MainActivity 的那一刻触发,它会要求主线程启动您的 MainActivity,并且启动它意味着要经历启动的活动的生命周期通过onCreate 方法。
  • 这是一篇很好的文章,可以从一开始就了解事情的运作方式。 link

标签: android oncreate


【解决方案1】:

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

这就是 CALLBACK FUNCTIONS 概念的用武之地。

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

这是一个例子:

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 类在线程中完成一些工作。如果线程完成工作,它将通过回调通知 A 类并提供结果。所以不需要轮询什么的。结果一出来,你就会得到。

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

更多研究请点击此链接:

link 1

link 2

【讨论】:

    【解决方案2】:

    onCreate 方法在Activity Lifecycle 期间被调用。 The docs 关于这个方法状态

    你必须实现这个回调,它在系统第一次创建活动时触发

    所以这个方法的重点是让你初始化任何特定于你的活动的东西,当它第一次创建时需要完成,并调用super 将它传播到它的超类,允许它们执行它们的初始化序列好吧。您不应该自己调用此方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 2013-11-01
      相关资源
      最近更新 更多