【问题标题】:When does Android make first call to View.onMeasure() after setContentView() in Activity.onCreate()?Android 何时在 Activity.onCreate() 中的 setContentView() 之后首次调用 View.onMeasure()?
【发布时间】:2018-01-31 01:17:37
【问题描述】:

假设一个 Android Activity 为包含一个或多个 View 的 XML 定义的布局调用 setCurrentView() 以以通常的方式绑定它:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // ... other stuff
    MyCustomViewClass mcv = (MyCustomViewClass)findViewById(R.id.mcv);
    mcv.setSomeValues(x,y,z);
    // ... more stuff
    // ... ok, finished with everything in onCreate()
}

在 Android 首次调用 R.layout.activity_main 中声明的任何子 View 的 onMeasure() 方法之前,对该 Activity 的 onCreate() 方法的调用是否保证完成执行并返回?或者 Android 是否有权在调用 setContentView() 期间或之后的任何时间开始调用 onMeasure()?

【问题讨论】:

    标签: android view lifecycle


    【解决方案1】:

    在 onCreate 结束时,Activity 甚至还没有出现在屏幕上(直到调用 onStart 才会出现)。所以在那之前它不会尝试布局任何东西,因为它不在屏幕上,因此不需要布局。

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多