有没有办法注册活动的事件?我专门对OnStart / OnStop事件感兴趣,我不想在活动中添加特殊操作。

有帮助吗?

解决方案

从其他活动的生命周期获取事件的方式是用主世代odicetagcode实例注册您的类作为一个生成的Application.ActivityLifecycleCallbacks,以及您感兴趣的Application的过滤事件。

这是一个很短的例子(你可能想要从除了世纪odicetagcode以外的另一个方法/类中注册回调,否则你会错过那些消息;)你可能有一个你不想要的依赖)

在您想要间谍的活动上:

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及更高的 ... 上工作

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top