我想在活动被销毁时在视图中进行一些清理。活动被销毁时,是否有任何方法可以在View中获取回调?我尝试使用onDetachedFromWindow
,但不确定这样做是否正确。
了解到不保证可以调用onDestroy,因此您可以在活动onDestroy方法中回调到视图中。
根据评论进行编辑:您可以通过在布局中为其指定ID并调用findViewById来获取任何视图。这是一个例子:
Layout.xml(仅显示最低要求)
<LinearLayout>
<com.example.superwidget.DropDownTouchEnabledListView
android:id="@+id/special_list_view" />
</LinearLayout>
MyActivity.java(再次,最少并假设正确导入)
@Override
void onDestroy() {
DownTouchEnabledListView v = (DownTouchEnabledListView)findViewById(R.id.special_list_view);
v.doCallback(with, parameters);
}
如果要获得回调而不必重载View.onDetachedFromWindow()
方法,则可以使用View.addOnAttachStateChangeListener()
方法,该方法将回调侦听器作为单个参数。
由于View.addOnAttachStateChangeListener()
包含View
,为此我使用Context
。到目前为止,我还没有遇到任何问题。
LocalBroadcastManager
正在收听View
。然后destroy event filter
只需要广播Activity
。
destroy event
一旦破坏事件触发,别忘了注销// On View `setup` function
LocalBroadcastManager.getInstance(context).registerReceiver(receiver, filter)
// On Activity
override fun onDestroy() {
super.onDestroy()
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)
}
。
event filter
您可以在此处找到有关presenter.destroy() // Your clean-up code here
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)
的更多详细信息:
LocalBroadcastManager