我继承了一些代码,因此我没有真正的自由来更改它。:(
我有一个主要活动,从中调用其他活动(从现在起我将这些活动称为子活动)。每当其中一个完成时,它就会调用完成并将数据返回给主活动。
每个活动(包括主要活动)的顶部都有一个显示自定义视图的栏。自定义视图包含一个画布,该画布具有依赖于网络状态的绘图.. 即 wifi/移动等...
由于“状态”数据永远不会改变,它保存在单例中,视图从单例中获取数据以定义它绘制的内容。这是没有问题的,即数据总是如我所料。
当我第一次启动 MainActivity 时,随着网络的变化,数据会发生变化,并且每次调用“无效”视图都会收到对“onDraw”的系统调用,正如我所期望的那样。
在每个子活动中也是如此。
在完成子活动并返回到 mainActivity 后,对 invalidate 的调用不再导致对 onDraw 的调用发生。
我已经看了很长时间了,只是无法弄清楚出了什么问题。
在我的构造函数中,我有:
setWillNotDraw(false);
每当数据更改时,都会调用以下方法:
invalidate();
requestLayout();
现在,还有一件事……在立即返回活动时,我刷新并且这确实绘制正确,即无效确实触发了 onDraw 调用……任何后续网络更改(被传播)都无法导致onDraw 调用。
我想知道这是否与视图以某种方式分离有关。我可以看到调用了“onDetachedFromWindow”,但是触发是子活动的破坏,因此我不明白为什么这会影响 MainActivity,但这是我唯一能想到的。
我希望我已经提供了足够的信息来帮助我的人......