2013-07-22 2 views
3

Я пишу вспомогательный класс для своей деятельности, в котором используется внешняя служба. Как и в стандартном шаблоне проектирования, касающемся связанных сервисов, я хочу привязать к созданию активности и отвязаться от разрушения активности. Тем не менее, я хочу изолировать эту логику с моим вспомогательным классом, чтобы активность использовала только экземпляр этого помощника и не вызывала bind и unbind явно.Как получить уведомление о жизненном цикле активности

Я могу передать действие в класс-помощник, но не могу найти способ запланировать обратный вызов событий жизненного цикла активности - таких методов нет в классе Activity. Хотя это, скорее всего, означает, что я не могу достичь того, что хочу, а также что это, вероятно, не очень хорошая идея, я все же хочу спросить об этом сообщество. Является ли это возможным? Это хорошая идея? Возможно ли достичь аналогичных результатов с некоторыми другими классами (а не с активностью)?

Я новичок в разработке Android, и я ищу лучшие практики. Любые идеи приветствуются.

Спасибо!

EDIT: В принципе, я хочу получать уведомление о создании и уничтожении деятельности. Я хочу иметь возможность запланировать обратный вызов по методам onCreate и onDestroy, но извне Activity. Эти методы защищены и, следовательно, недоступны для других классов.

+0

Возможно, вы захотите объяснить, что вы подразумеваете под «расписанием обратного вызова событий жизненного цикла активности». – CommonsWare

+1

http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html? – Luksprog

+0

@Luksprog, просьба ответить на ваш комментарий, и я приму это. – Haspemulator

ответ

3

Вы можете использовать класс Application.ActivityLifecycleCallbacks. Имейте в виду, что класс был введен в API уровня 14. Для более низких версий вы можете использовать методы hook в своей библиотеке и потребовать, чтобы целевой Activity вызовет соответствующий метод hook из соответствующего метода жизненного цикла. Конечно, это будет очень хрупкая реализация.

0

Методы жизненного цикла - это средство реализации поведения, которое будет выполняться, когда DalvikVM решит что-то сделать с Activity (pause/resume/create/destroy), а не искусственно ссылаться на это поведение.

Если вы хотите экстернализировать логику в вспомогательном/контроллере какого-либо типа и иметь возможность использовать служебное соединение, выполните инициализацию в обработчике ServiceConnection.

private ServiceConnection mConnection = new ServiceConnection() { 

    @Override 
    public void onServiceConnected(ComponentName className,IBinder service) { 
     ...init helper here... 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName arg0) { 
     ...shutdown helper here... 
    } 
}; 

затем обрабатывать соединения как обычно.

Смежные вопросы