8

Activity当以下事件发生时,我编写的其中一个类需要做出反应:

  • 开始()
  • 暂停()
  • onResume()
  • 停止()

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

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.

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

4

3 回答 3

7

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

受保护的无效 onPause() {
  超级.onPause();
  yourClassInstance.onPause();
}

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

于 2012-05-09T08:18:48.760 回答
0

利用自 API 级别 14 以来引入的ActivityLifecycleCallbacks 。

这就是现在界面的样子。

public interface ActivityLifecycleCallbacks {
    void onActivityCreated(Activity activity, Bundle savedInstanceState);
    void onActivityStarted(Activity activity);
    void onActivityResumed(Activity activity);
    void onActivityPaused(Activity activity);
    void onActivityStopped(Activity activity);
    void onActivitySaveInstanceState(Activity activity, Bundle outState);
    void onActivityDestroyed(Activity activity);
}

您需要做的只是实现接口方法并将其注册到您的应用程序中。

public class MyApplication extends Application implements ActivityLifecycleCallbacks {
    @Override
    public void onCreate() {
         super.onCreate();
         this.registerActivityLifecycleCallbacks(this);
    }

    //implement call back methods. 
}
于 2020-02-16T07:45:58.327 回答
-1

您可以使用这个库来完成您想要做的事情,而无需在您的活动或基础活动中编写代码。

并且使用起来非常简单:

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

也许它可以帮助某人

于 2016-02-23T23:28:11.027 回答