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()
。生命周期分为以下三个部分。
activity 的 整个生命周期 发生在第一次调用 onCreate(Bundle)
到最后一次调用 [= 之间12=]。 activity 将在 onCreate()
中完成 "global" 状态的所有设置,并释放 onDestroy()
中的所有剩余资源。例如,如果它在后台有一个线程 运行 从网络下载数据,它可能会在 onCreate()
中创建该线程,然后在 onDestroy()
.[=34= 中停止该线程]
activity 的 可见生命周期 发生在对 onStart()
的调用与对 onStop()
的相应调用之间.在此期间,用户可以在屏幕上看到 activity,但它可能不在前台并与用户交互。在这两种方法之间,您可以维护向用户显示 activity 所需的资源。例如,您可以在 onStart()
中注册一个 BroadcastReceiver
以监视影响您的 UI 的更改,并在用户不再看到您显示的内容时在 onStop()
中取消注册. onStart()
和 onStop()
方法可以多次调用,因为 activity 对用户可见和隐藏。
activity 的 前台生命周期 发生在对 onResume()
的调用与对 onPause()
的相应调用之间.在此期间,activity 处于所有其他活动的前面并与用户交互。 activity 可以频繁地在恢复和暂停状态之间切换——例如,当设备进入睡眠状态时,当交付 activity 结果时,当交付新意图时——所以这些中的代码方法应该相当轻量级。
如果你看到 onCreate
的描述,它会说 -
在 activity 首次创建时调用。这是您应该进行所有常规静态设置的地方:创建视图、将数据绑定到列表等。此方法还为您提供了一个包含 activity 先前冻结状态的 Bundle(如果有的话)。始终跟随 onStart()。
onCreate
是我们设置视图的地方。完成后,下一个回调是 onStart
,在调用它时您会看到在 onCreate
.
中创建的视图
因此,这是您的答案: 您正在 onCreate
中创建视图,该视图在执行 onStart
后显示。并不是说你在 onCreate
里做什么都看不到效果。您正在设置文本,这意味着创建视图,一旦 activity 可见,它就会显示。
我刚刚开始学习 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()
。生命周期分为以下三个部分。
activity 的 整个生命周期 发生在第一次调用
onCreate(Bundle)
到最后一次调用 [= 之间12=]。 activity 将在onCreate()
中完成 "global" 状态的所有设置,并释放onDestroy()
中的所有剩余资源。例如,如果它在后台有一个线程 运行 从网络下载数据,它可能会在onCreate()
中创建该线程,然后在onDestroy()
.[=34= 中停止该线程]activity 的 可见生命周期 发生在对
onStart()
的调用与对onStop()
的相应调用之间.在此期间,用户可以在屏幕上看到 activity,但它可能不在前台并与用户交互。在这两种方法之间,您可以维护向用户显示 activity 所需的资源。例如,您可以在onStart()
中注册一个BroadcastReceiver
以监视影响您的 UI 的更改,并在用户不再看到您显示的内容时在onStop()
中取消注册.onStart()
和onStop()
方法可以多次调用,因为 activity 对用户可见和隐藏。activity 的 前台生命周期 发生在对
onResume()
的调用与对onPause()
的相应调用之间.在此期间,activity 处于所有其他活动的前面并与用户交互。 activity 可以频繁地在恢复和暂停状态之间切换——例如,当设备进入睡眠状态时,当交付 activity 结果时,当交付新意图时——所以这些中的代码方法应该相当轻量级。
如果你看到 onCreate
的描述,它会说 -
在 activity 首次创建时调用。这是您应该进行所有常规静态设置的地方:创建视图、将数据绑定到列表等。此方法还为您提供了一个包含 activity 先前冻结状态的 Bundle(如果有的话)。始终跟随 onStart()。
onCreate
是我们设置视图的地方。完成后,下一个回调是 onStart
,在调用它时您会看到在 onCreate
.
因此,这是您的答案: 您正在 onCreate
中创建视图,该视图在执行 onStart
后显示。并不是说你在 onCreate
里做什么都看不到效果。您正在设置文本,这意味着创建视图,一旦 activity 可见,它就会显示。