【问题标题】:Android app lifecycle engine libraryAndroid 应用生命周期引擎库
【发布时间】:2015-06-11 06:07:42
【问题描述】:

对于一个项目,我需要一个通用的灵活生命周期引擎之类的东西。我的意思是,我应该能够用它注册一些组件。组件应在不同的应用程序/活动生命周期事件上触发。

例如:

  • 组件 A 响应 onStart()、onStop() 和 onDestroy()
  • 组分 B 对 onStart() 和 onPause() 做出反应

此外,组件应该能够对其他组件/事件做出反应。

例如:

  • 组件 A 和 B 完成特定任务时触发组件 C

在我开始自己写东西之前,我想检查一下是否已经有一个库可以做这些事情。

【问题讨论】:

  • 好吧,我想到了 OSGi。

标签: android lifecycle


【解决方案1】:

您可以创建自定义应用程序类扩展 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());
      }
   }
}

【讨论】:

  • 这其实很有趣。但是有两个问题:1. 它需要最低 android 14 和 2. 它不能解决问题中更复杂的部分(对其他组件事件的反应)
  • Android 14 = Android 4.0.3。如果你将 min sdk 设置为这个版本,你仍然会接触到很多用户,因为 Android 4 是这个操作系统的常用版本。使用 ActivityLifeCycleCallbacks,您可以解决第一个问题(组件 A 对一般活动或特定活动内的特定事件作出反应)。我认为,你的第二个问题可以用 RxJava 解决。我不知道你的任务细节,但我想你可以从那时开始。
猜你喜欢
  • 2011-01-11
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 2011-06-02
  • 1970-01-01
  • 2013-04-06
相关资源
最近更新 更多