Опасно полагаться на «разрушение» макета для выполнения операторов, поскольку вы не можете непосредственно контролировать, когда это происходит. Общепринятым способом и хорошей практикой является использование для этого жизненного цикла .
Но если вы действительно хотите связать свой компонент с этим жизненным циклом , я предлагаю вашему компоненту реализовать интерфейс (что-то вроде 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
в зависимости от того, когда вы хотите, чтобы произошло удаление.