Administrator
2021-11-11 dadbf7a3fd20a8e0dc7e0601f30a2f696cc9fc6e
app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java
@@ -8,6 +8,7 @@
import androidx.lifecycle.ViewModel;
import com.duqing.missions.R;
import com.duqing.missions.retrofit.AndroidScheduler;
import com.duqing.missions.ui.login.data.LoginRepository;
import com.duqing.missions.ui.login.data.model.LoggedInUser;
@@ -15,6 +16,7 @@
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.observers.DisposableObserver;
import io.reactivex.schedulers.Schedulers;
public class LoginViewModel extends ViewModel {
@@ -39,28 +41,30 @@
    public void login(String username, String password) {
        // can be launched in a separate asynchronous job
        Observable<LoggedInUser> result = loginRepository.login(username, password);
        result.doOnSubscribe(new Consumer<Disposable>() {
            @Override
            public void accept(Disposable disposable) throws Exception {
        result.subscribeOn(Schedulers.io())//指定网络请求在io后台线程中进行
            .observeOn(AndroidScheduler.mainThread())//指定observer回调在UI主线程中进行
            .doOnSubscribe(new Consumer<Disposable>() {
                @Override
                public void accept(Disposable disposable) throws Exception {
            }
        }).subscribe(new DisposableObserver<LoggedInUser>(){
                }
            }).subscribe(new DisposableObserver<LoggedInUser>(){
            @Override
            public void onNext(LoggedInUser value) {
                loginResult.setValue(new LoginResult((new LoggedInUserView(value.getDisplayName()))));
            }
                @Override
                public void onNext(LoggedInUser value) {
                    loginResult.setValue(new LoginResult((new LoggedInUserView(value.getDisplayName()))));
                }
            @Override
            public void onError(Throwable e) {
                loginResult.setValue(new LoginResult(R.string.login_failed));
            }
                @Override
                public void onError(Throwable e) {
                    loginResult.setValue(new LoginResult(R.string.login_failed));
                }
            @Override
            public void onComplete() {
                @Override
                public void onComplete() {
            }
        });
                }
            });
    }
    public void loginDataChanged(String username, String password) {