一段时间后未调用ViewTreeObserver侦听器

mic*_*ith 5 java android

使用ViewTreeObserver时遇到很大困难.一切都在一段不可预测的时间内正常工作,然后听众就不再运作了.肯定是因为文档中写的内容:返回的ViewTreeObserver观察器不保证在此视图的生命周期内保持有效. 因此,每次更改视图时,我都会重做设置:

   protected void shrinkToFit(final TextView t) {
    if(vto==null||!vto.isAlive()){
    vto = t.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        public void onGlobalLayout() {
            doAdjust(t);
        }
    });
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我如何调用它:

TextView t = (TextView) findViewById(R.id.maindesc);

                t.setTextSize(Constants.MAINDESC_SIZE);

                String todisp_1 = tarifreadtemp.area_desc + ":"
                        + tarifreadtemp.area_tarifuserdesc;
                shrinkToFit(t);
                t.setText(todisp_1);
                t.invalidate();
Run Code Online (Sandbox Code Playgroud)

Cat*_*ata 1

通常,我addOnGlobalLayoutListener在布局重绘或更改之前将侦听器添加到视图中(这可能在我第一次初始化视图时或更改其布局之前发生),并且在侦听器中我要做的第一件事就是从视图中删除侦听器。