2015-06-10 3 views
0

Для проекта мне нужно что-то вроде универсального гибкого механизма жизненного цикла. Я имею в виду, что я должен иметь возможность зарегистрировать с ним несколько компонентов. Компоненты должны запускаться при различных событиях жизненного цикла приложения/активности.Библиотека жизненного цикла Android-приложения

Например:

  • компонент А реагирует на OnStart(), OnStop() и OnDestroy()
  • компонент B реагирует на OnStart() и OnPause()

В дополнительные компоненты должны реагировать на другие компоненты/события.

Например:

  • компонент C получает срабатывает, когда компоненты А и Б закончили конкретную задачу

Перед тем, как начать писать что-то сам, я хотел, чтобы проверить, есть ли уже библиотека, которая может делать такие вещи.

+0

Ну, OSGi приходит на ум. – john

ответ

0

Вы можете создать свой собственный класс приложений, расширяющий класс Android Application. Затем вы можете создать и зарегистрировать ActivityLifecycleCallbacks. После этого вы можете реализовать свою логику внутри обратных вызовов.

public class MyApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     registerActivityLifecycleCallbacks(new MyActivityLifecycleCallbacks()); 
    } 

    private static final class MyActivityLifecycleCallbacks implements ActivityLifecycleCallbacks { 

     public void onActivityCreated(Activity activity, Bundle bundle) { 
     Log.e("","onActivityCreated:" + activity.getLocalClassName()); 
     } 

     public void onActivityDestroyed(Activity activity) { 
     Log.e("","onActivityDestroyed:" + activity.getLocalClassName()); 
     } 

     public void onActivityPaused(Activity activity) { 
     Log.e("","onActivityPaused:" + activity.getLocalClassName()); 
     } 

     public void onActivityResumed(Activity activity) { 
     Log.e("","onActivityResumed:" + activity.getLocalClassName()); 
     } 

     public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 
     Log.e("","onActivitySaveInstanceState:" + activity.getLocalClassName()); 
     } 

     public void onActivityStarted(Activity activity) { 
     Log.e("","onActivityStarted:" + activity.getLocalClassName()); 
     } 

     public void onActivityStopped(Activity activity) { 
     Log.e("","onActivityStopped:" + activity.getLocalClassName()); 
     } 
    } 
} 
+0

Это на самом деле довольно интересно. Две проблемы: 1. Требуется минимальный андроид 14 и 2. Это не решение более сложной части вопроса (реагирование на события других компонентов). – SimonSays

+0

Android 14 = Android 4.0.3. Если вы установите min sdk для этой версии, вы все равно доберетесь до многих пользователей, потому что Android 4 - это обычно используемая версия этой ОС. С ActivityLifeCycleCallbacks вы можете решить первую проблему (компонент A реагирует на конкретное событие в активности вообще или внутри определенного действия). Я думаю, ваша вторая проблема может быть решена с помощью RxJava. Я не знаю подробностей вашей задачи, но, полагаю, вы можете начать с такой точки. –

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