首页 文章

使对象侦听Activity生命周期事件?

提问于
浏览
8

我写的其中一个类需要在发生以下 Activity 事件时作出反应:

  • onStart()

  • onPause()

  • onResume()

  • onStop()

我可以对活动本身的那些做出反应:

public class Activity extends ApplicationContext
{
    protected void onCreate(Bundle savedInstanceState);

    protected void onStart();

    protected void onRestart();

    protected void onResume();

    protected void onPause();

    protected void onStop();

    protected void onDestroy();
}

Activity 我可以告诉有问题的对象发生了某个事件,但我不喜欢这个想法:它需要开发人员在我的 object/class 之外实现逻辑 . 理想情况下,我希望该对象负责注册这些事件并将其自身设置为侦听器,而与 Activity 无关 .

有任何想法吗?提前致谢 .

2 回答

  • 7

    API级别14具有Application.ActivityLifecycleCallbacks .
    在那之前,afaik,对不起,没有 .
    如果您希望将您的课程提供给其他人,您将需要提供扩展最常见活动的抽象类,或者让他们将某些调用放在他们自己的Activity的生命周期方法中,例如

    protected void onPause() {
      super.onPause();
      yourClassInstance.onPause();
    }
    

    也可以使它更通用,并创建接受NotifyingActivity.LifecycleListener的抽象NotifyingActivity类,并使您的类实现这样的侦听器并在其构造函数中注册自己 .

  • -1

    您可以使用this library完全按照您要执行的操作,而无需在您的活动或基本活动中编写代码 .

    而且使用起来非常简单:

    ActivityListener.bind(mActivity).with(mCallback);
    

    也许它有助于某人

相关问题