3

有没有办法注册活动的事件?我对 onStart / onStop 事件特别感兴趣,我不想为此在活动中添加特殊操作。

4

1 回答 1

4

从其他活动的生命周期中获取事件的一种方法是将您的类注册为Application.ActivityLifecycleCallbacks带有主实例的类,并为您感兴趣的Application过滤事件。Activity

这是一个简短的示例(您可能希望从另一个方法/类注册回调,MainActivity.onCreate否则您会错过该消息;)并且您可能有一个您不想要的依赖项)

在您要监视的活动上:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Register a spy for this activity
        getApplication().registerActivityLifecycleCallbacks(new ActivitySpy(this));
    }
}

然后间谍代码看起来像:

public class ActivitySpy implements ActivityLifecycleCallbacks {

    private final Activity mActivity;

    public ActivitySpy(Activity activity) {
        mActivity = activity;
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        if (mActivity == activity)
            Log.i("SPY", "Activity Created");
    }

    @Override
    public void onActivityDestroyed(Activity activity) {
        if (mActivity == activity)
            Log.i("SPY", "Activity Destroyed");
    }

    // (...) Other overrides

}

如果您有对要关注的活动的引用,您也可以从其他地方注册间谍。

我希望这有帮助 :)

编辑:我忘了提,这仅适用于API 级别 14 及以上...

于 2012-09-29T13:18:28.257 回答