3

我正在使用 android 注释为 android 开发。我有一个单例可观察对象,我想为其添加活动作为观察者。如下所示:

@EActivity(R.layout.myActivity)
public class MyActivity extends SherlockActivity implements Observer { 

    @Bean //has singleton scope
    protected Observerable o;

    @Override
    public void onCreate() {
        o.registerObserver(this);
    }

    @Override
    public void onDestroy() {
        o.unregisterObserver(this);
    }

    //more code

我的问题在于 on destroy 方法。是否会出现android在停止或暂停状态下杀死活动而不调用的情况onDestroy()?如果是这种情况,我Observerable可能会保留对系统不再使用的活动的实时引用,这不好。还是不是这样?如果我的假设是在我的注册观察者列表中保留对我所有活动的弱引用,那么它们可以自动取消注册。这是一个好的解决方案还是不需要?

4

2 回答 2

2

操作系统可以在不调用 onDestroy 的情况下终止您的进程,否则您可以依赖 onDestroy 被调用。因此,只要您的 Observable 与活动处于同一进程中,就可以了。

于 2012-09-29T17:11:56.933 回答
1

根据Android 文档中 Activity 的生命周期,如果必须启动其他应用程序并且系统没有足够的内存,则可能会发生这种情况。

编辑:好吧,在这种情况下,系统似乎仍会调用此方法。我不太确定工作流程了...

于 2012-09-29T14:57:16.977 回答