2016-07-04 81 views
0

我正在开发一个应用程序,它监听使用ViewTreeObserver绘制的查看事件,如滚动,布局。 ViewTreeObserver有一个方法可以在做任何事情之前检查它是否存在,例如。添加听众。Android ViewTreeObserver存活多久?

我必须重现死/无活ViewTreeObserver的问题,以查看我的代码在生产中是否正常工作。我没有看到任何android文档重现它。

我欣赏任何帮助/指针。

感谢

回答

0

事实上,如果你检查类ViewTreeObserver的源代码,有一个“杀”功能mAlive设置为false,也只有在这里,但它永远不会被调用。

/** 
* Marks this ViewTreeObserver as not alive. After invoking this method, invoking 
* any other method but {@link #isAlive()} and {@link #kill()} will throw an Exception. 
* 
* @hide 
*/ 
private void kill() { 
    mAlive = false; 
} 

在我看来,这名观察员将变得不可用(但不是取消活着,你不能使用的IsAlive()来确定当前观测的状态)后:

  1. 您删除监听器,例如 view.getViewTreeObserver()。removeOnGlobalLayoutListener(this);

  2. 含有视图的当前活动被破坏