在destroy()android上删除观察者

时间:2012-09-29 14:41:12

标签: android observer-pattern android-annotations

我正在使用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方法。在没有调用onDestroy()的情况下,android会在停止或暂停状态期间杀死活动吗?如果是这种情况,我的Observerable可以保持对系统不再使用的活动的实时引用,这是不好的。或者情况不是这样吗?如果是我的推测是在我的注册观察员名单中保留对我所有活动的弱引用,那么它们可以自动取消注册。这是一个很好的解决方案还是不需要?

2 个答案:

答案 0 :(得分:2)

操作系统可以在不调用onDestroy的情况下终止您的进程,但是否则您可以依赖onDestroy进行调用。因此,如果您的Observable与活动处于同一过程中,那么您没问题。

答案 1 :(得分:1)

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

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