Android保存网络请求状态

时间:2015-11-08 13:04:05

标签: java android

我编写了我的第一个Android应用程序,现在正在研究Dmitry Kalita项目 - https://github.com/rusmonster/signin(为e-legion android-develop课程编写的项目)。

项目结构如下所示: MainActivity.java:

public class SignInActivity extends Activity implements SignInModel.Observer {
    private SignInModel mSignInModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        mSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                mSignInModel.signIn(userName, password);
            }
        });
        //Восстановление SignInModel
        mSignInModel.registerObserver(this);
    }

    @Override
    protected void onDestroy() {
        mSignInModel.unregisterObserver(this);
        if (isFinishing()) {
            mSignInModel.stopSignIn();
        }
    }

    @Override
    public void onSignInStarted(final SignInModel signInModel) {
    }

    @Override
    public void onSignInSucceeded(final SignInModel signInModel) {
    }

    @Override
    public void onSignInFailed(final SignInModel signInModel) {
    }
}

SignInModel.java

public class SignInModel {
    private final SignInObservable mObservable = new SignInObservable();

    public void signIn(final String userName, final String password) {
        if (mIsWorking) {
            return;
        }
        mObservable.notifyStarted();
    }

    public void registerObserver(final Observer observer) {
        mObservable.registerObserver(observer);
        if (mIsWorking) {
            observer.onSignInStarted(this);
        }
    }

    public void unregisterObserver(final Observer observer) {
        mObservable.unregisterObserver(observer);
    }

    private class SignInObservable extends Observable<Observer> {
        public void notifyStarted() {
            for (final Observer observer : mObservers) {
                observer.onSignInStarted(SignInModel.this);
            }
        }

        public void notifySucceeded() {
            for (final Observer observer : mObservers) {
                observer.onSignInSucceeded(SignInModel.this);
            }
        }

        public void notifyFailed() {
            for (final Observer observer : mObservers) {
                observer.onSignInFailed(SignInModel.this);
            }
        }
    }
}

但是在我的项目中,我有很多网络请求(例如,在一个活动中加载了照片和文字信息),而且我不知道如何在这种架构下做到这一点。

  • 制作两个模型(一个用于照片加载,一个用于信息加载)。
  • 制作它 一个模型,但应该知道现在如何执行流程。

请帮我选择正确的方式。

P.S:我知道这不是最好的方法,但是很简单,如果你知道更好的方法(不太难),那么请告诉我。

0 个答案:

没有答案