From dadbf7a3fd20a8e0dc7e0601f30a2f696cc9fc6e Mon Sep 17 00:00:00 2001
From: Administrator <123>
Date: Thu, 11 Nov 2021 02:40:05 +0000
Subject: [PATCH] 完成登录接口接入demo

---
 app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java |   38 +++++++++++++++++++++-----------------
 1 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java b/app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java
index d963549..d24f341 100644
--- a/app/src/main/java/com/duqing/missions/ui/login/view/LoginViewModel.java
+++ b/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) {

--
Gitblit v1.9.1