Android为什么在onCreate时显示文字

Android why does text display at onCreate

我刚刚开始学习 Android Studio。根据 Android developer 用户可见的所有 activity 发生在 onStart 和 onStop 之间。 为什么在我的简单程序中编写的文本 "onCreate" 显示在第一个 运行 上?

public class MainActivity extends AppCompatActivity {

private TextView texten = null;

private void print(String text) {
    String line = text + "\n";
    texten.setText(texten.getText() + line);
}

DecimalFormat dec = new DecimalFormat("0.0000");

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    texten = new TextView(this);
    texten.setText("");
    setContentView(texten);
    print("onCreate");
}

...

如果您看到 Activity 生命周期,在 activity 创建时调用的第一个方法是 onCreate()。生命周期分为以下三个部分。

  1. activity 的 整个生命周期 发生在第一次调用 onCreate(Bundle) 到最后一次调用 [= 之间12=]。 activity 将在 onCreate() 中完成 "global" 状态的所有设置,并释放 onDestroy() 中的所有剩余资源。例如,如果它在后台有一个线程 运行 从网络下载数据,它可能会在 onCreate() 中创建该线程,然后在 onDestroy().[=34= 中停止该线程]

  2. activity 的 可见生命周期 发生在对 onStart() 的调用与对 onStop() 的相应调用之间.在此期间,用户可以在屏幕上看到 activity,但它可能不在前台并与用户交互。在这两种方法之间,您可以维护向用户显示 activity 所需的资源。例如,您可以在 onStart() 中注册一个 BroadcastReceiver 以监视影响您的 UI 的更改,并在用户不再看到您显示的内容时在 onStop() 中取消注册. onStart()onStop() 方法可以多次调用,因为 activity 对用户可见和隐藏。

  3. activity 的 前台生命周期 发生在对 onResume() 的调用与对 onPause() 的相应调用之间.在此期间,activity 处于所有其他活动的前面并与用户交互。 activity 可以频繁地在恢复和暂停状态之间切换——例如,当设备进入睡眠状态时,当交付 activity 结果时,当交付新意图时——所以这些中的代码方法应该相当轻量级。

如果你看到 onCreate 的描述,它会说 -

在 activity 首次创建时调用。这是您应该进行所有常规静态设置的地方:创建视图、将数据绑定到列表等。此方法还为您提供了一个包含 activity 先前冻结状态的 Bundle(如果有的话)。始终跟随 onStart()。

onCreate 是我们设置视图的地方。完成后,下一个回调是 onStart,在调用它时您会看到在 onCreate.

中创建的视图

因此,这是您的答案: 您正在 onCreate 中创建视图,该视图在执行 onStart 后显示。并不是说你在 onCreate 里做什么都看不到效果。您正在设置文本,这意味着创建视图,一旦 activity 可见,它就会显示。