Ответ 1
Опасно полагаться на "разрушение" макета для выполнения операторов, так как вы не контролируете напрямую, когда это происходит. Принятым способом и хорошей практикой является использование жизненного цикла деятельности для этого.
Но если вы действительно хотите привязать свой компонент к этому жизненному циклу, я предлагаю вашему компоненту реализовать интерфейс (что-то вроде Removable
) и сделать что-то подобное в вашем базовом классе активности (чтобы все ваши действия расширялись):
protected Set<Removable> myRemovableItems = new HashSet<Removable>();
@Override
public void onPause() {
super.onPause();
for (Removable removable : myRemovableItems) {
removable.remove();
}
}
Интерфейс:
public interface Removable {
void remove();
}
Затем каждый раз, когда вы добавляете один из ваших настраиваемых компонентов из активности, вы добавляете компонент во внутренний набор Removable
активности, и его метод remove
будет автоматически вызываться каждый раз, когда действие приостанавливается.
Это позволит вам указать, что делать, когда onPause
вызывается внутри самого компонента. Но это не гарантирует, что он будет автоматически вызван, потому что вам придется делать это в своей деятельности.
Примечание: вы можете использовать onStop
вместо onPause
в зависимости от того, когда вы хотите, чтобы удаление произошло.