Android 何时在 Activity.onCreate() 中的 setContentView() 之后首次调用 View.onMeasure()?
Posted
技术标签:
【中文标题】Android 何时在 Activity.onCreate() 中的 setContentView() 之后首次调用 View.onMeasure()?【英文标题】:When does Android make first call to View.onMeasure() after setContentView() in Activity.onCreate()? 【发布时间】: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()?
【问题讨论】:
【参考方案1】:在 onCreate 结束时,Activity 甚至还没有出现在屏幕上(直到调用 onStart 才会出现)。所以在那之前它不会尝试布局任何东西,因为它不在屏幕上,因此不需要布局。
【讨论】:
以上是关于Android 何时在 Activity.onCreate() 中的 setContentView() 之后首次调用 View.onMeasure()?的主要内容,如果未能解决你的问题,请参考以下文章
Android 数据存储,何时使用 Sqlite,何时使用 JSON,Linq 替代方案
android Service oncreate 在UI线程 何时用service,何时用thread
如何确定 HTML 元素何时在 Android WebView 中获得焦点?