我正在使用安卓注释为安卓开发。 我有一个单例可观察对象,我想为其添加活动作为观察者。 如下所示:
@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
我的问题是销毁方法。 是否存在安卓在停止或暂停状态下终止活动而不调用onDestroy()
的情况? 如果是这种情况,我的Observerable
可能会保留对系统不再使用的活动的实时引用,这并不好。 还是不是这样? 如果我的假设是在我的登记观察员名单中保留对我所有活动的弱提及,以便他们可以自动取消登记。 这是一个好的解决方案还是不需要?
操作系统可以在不调用 onDestroy 的情况下终止您的进程,但否则您可以依赖调用 onDestroy。因此,只要您的可观察量与活动处于同一过程中,您就可以了。
根据 Android 文档中的活动生命周期,如果其他应用程序必须启动并且系统没有足够的内存,则可能会发生这种情况。
编辑:好吧,在这种情况下,系统似乎仍将调用此方法。我不太确定工作流程了...