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 2
onCreate
方法在 Activity Lifecycle. The docs 期间被调用,关于此方法状态
You must implement this callback, which fires when the system first creates the activity
所以这个方法的目的是让你初始化任何特定于你的 activity 的东西,这些东西在第一次创建时需要完成,然后调用 super
将它传播到它的超类,允许他们也执行初始化序列。您不应该自己调用此方法。
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 2
onCreate
方法在 Activity Lifecycle. The docs 期间被调用,关于此方法状态
You must implement this callback, which fires when the system first creates the activity
所以这个方法的目的是让你初始化任何特定于你的 activity 的东西,这些东西在第一次创建时需要完成,然后调用 super
将它传播到它的超类,允许他们也执行初始化序列。您不应该自己调用此方法。