如何检测视图的父活动是否被销毁

bhu*_*ups 8 android view callback android-activity

我希望在活动被销毁时在视图中进行一些清理.当活动被销毁时,有没有办法在View中获得回调?我尝试过使用onDetachedFromWindow,但我不确定这是否正确.

Édo*_*ier 7

如果要在不必重载View.onDetachedFromWindow()方法的情况下获取回调,可以使用该View.addOnAttachStateChangeListener()方法,该方法将回调侦听器作为单个参数.


Jer*_*nes 1

了解 onDestroy 不能保证被调用后,您可以在活动 onDestroy 方法中回调到您的视图。

编辑回应评论:您可以通过在布局中给它一个 id 并调用 findViewById 来获取任何视图。这是一个例子:

Layout.xml(仅显示最低限度)

<LinearLayout>
  <com.example.superwidget.DropDownTouchEnabledListView
    android:id="@+id/special_list_view" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

MyActivity.java(同样,最小限度并假设正确导入)

@Override
void onDestroy() {
    DownTouchEnabledListView v = (DownTouchEnabledListView)findViewById(R.id.special_list_view);
    v.doCallback(with, parameters);
}
Run Code Online (Sandbox Code Playgroud)

  • “因此,调用活动课中所看到的东西是不可行的。” 就是这样。调用“findViewById()”,获取小部件,将其转换为适当的类,然后调用其方法。话虽这么说,“onDetachedFromWindow()”对我来说似乎是一个合理的选择。 (2认同)