是否有从其父视图中删除视图的回调?我需要在视图完成后回收一些图像。我一直在网上四处寻找该怎么做,但还没有发现任何有用的东西。
答案 0 :(得分:8)
我一直在寻找类似的东西。我能找到的最好的是View.OnAttachStateChangeListener。我怀疑它是理想的,因为它是添加View时的回调&从窗口移除 - 不是父母,但它足以满足我的需求。
答案 1 :(得分:5)
您可以在自定义onDetachedFromWindow
代码中覆盖View
,而不是注册新的侦听器。
答案 2 :(得分:1)
Android KTX (核心KTX)库为您提供了一个不错的解决方案。
您将需要以下依赖项:androidx.core:core-ktx:1.3.0
然后,您可以调用函数“ doOnDetach”,以在从窗口中删除视图时发出您要运行一次代码的信号:
fun myInitCode() {
...
myView.doOnDetach(this::doOnMyViewDetachFromWindow)
...
}
fun doOnMyViewDetachFromWindow(view: View) {
... put your image cleanup code here ...
}
您可以将lambda传递给“ doOnDetach”,但是根据您需要执行的工作量,上面显示的方法引用可能更简洁。
doOnDetach的描述如下:
androidx.core.view ViewKt.class公共内联乐趣View.doOnDetach( 跨行操作:(查看)→单位):单位
当此视图与窗口分离时,执行给定的操作。如果 视图未附加到窗口,将执行该操作 立即执行,否则将在视图结束后执行该操作 与当前窗口分离。该动作将仅被调用 一次,所有听众都将被删除。