简而言之,我需要知道应用程序的启动何时完成,即确切地将应用程序完全绘制并且对用户可见。
ViewTreeObserver.OnGlobalLayoutListener()
有单一方法 - onGlobalLayout()
。
我看到它被多次调用,但我无法检测每个特定调用背后的原因。通常在应用程序可见之前调用2-3次。因此,我需要知道在每次启动应用程序时是否会调用2次或3次或者X次,所以我认为每次调用onGlobalLayout()
的原因都有助于确定这一点。
但如果有更好的方法来完成这项任务,我不会坚持使用onGlobalLayout()
,所以请随意提供其他可能性。
答案 0 :(得分:2)
是的,有更好的方法。你非常接近它。
view.getViewTreeObserver().addOnPreDrawListener(myListener);
一旦测量完整的UI并进行布局,就会调用此回调。在此回调之后,绘图操作将立即发生。
使用方面的特别说明:
onPreDraw
方法必须返回true
,否则绘图操作不会发生。onPreDraw
方法中删除监听器。 view.getViewTreeObserver().removeOnPreDrawListener(myListener);
或者你不断为每次抽奖操作一次又一次地打电话。答案 1 :(得分:1)
我认为你的方向是错误的。
你应该试试.post(Runnable action)
。
假设linearLayout1应该最后绘制,那么你应该试试这个......
linearLayout1.post(new Runnable() {
@Override
public void run() {// will be call when linearLayout1 will be completely loaded
// TODO Auto-generated method stub
//you can write your code here
}
});