Sfoglia il codice sorgente

1.将MainActivity中的livedata改为flow防止不可见时无法登陆socket。

2025_1_7x505f
wangwanlei 1 mese fa
parent
commit
72bb2a3e60

+ 33
- 26
app/src/main/java/com/xhly/manageapp/ui/main/activity/MainActivity.kt Vedi File

@@ -683,37 +683,44 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
683 683
                 }
684 684
             }
685 685
         }
686
+        viewModel.viewModelScope.launch {
687
+            viewModel.mainLoginData.collect{bean->
688
+               bean?.let {suserBean->
689
+                    if (!updateUser){
690
+                        return@collect
691
+                    }
692
+                    updateUser=false
693
+                    if (suserBean.xhlyLoginSucess){
694
+                        userBean=suserBean
695
+                        val data = LogdOperateBean()
696
+                        ManageApplication.getDeviceInfo()?.let {
697
+                            data.sn = it
698
+                        }
699
+                        data.doEvent = EventLog.ACCOUNTLOGINEVENT
700
+                        data.comm=EventLog.ACCOUNTLOGINEVENTSTRING
701
+                        viewModel.eventLog(data)
702
+                        Const.USERID=suserBean.userid
703
+                        Const.USERNAME=suserBean.username.toString()
704
+                        Const.SCHOOLID=suserBean.schoolid
705
+                        Const.CLASSID=suserBean.classid
706
+                        spUtils.saveJson(Const.USERINFO,suserBean)
707
+                        val parseClassToJson = GsonUtils.parseClassToJson(suserBean)
708
+                        ZSpProvider.save(this@MainActivity,Const.USERINFO,parseClassToJson)
709
+                        AppSocket.onDestroy()
710
+                        AppSocket.startSocket(ManageApplication.instance)
711
+                    }else{
712
+                        suserBean.xhlyLoginMessage?.let {
713
+                            Toast(it)
714
+                        }
715
+                    }
686 716
 
687
-        viewModel.mainLoginData.observe(this){userBean->
688
-            if (!updateUser){
689
-                return@observe
690
-            }
691
-            updateUser=false
692
-            if (userBean.xhlyLoginSucess){
693
-                this.userBean=userBean
694
-                val data = LogdOperateBean()
695
-                ManageApplication.getDeviceInfo()?.let {
696
-                    data.sn = it
697
-                }
698
-                data.doEvent = EventLog.ACCOUNTLOGINEVENT
699
-                data.comm=EventLog.ACCOUNTLOGINEVENTSTRING
700
-                viewModel.eventLog(data)
701
-                Const.USERID=userBean.userid
702
-                Const.USERNAME=userBean.username.toString()
703
-                Const.SCHOOLID=userBean.schoolid
704
-                Const.CLASSID=userBean.classid
705
-                spUtils.saveJson(Const.USERINFO,userBean)
706
-                val parseClassToJson = GsonUtils.parseClassToJson(userBean)
707
-                ZSpProvider.save(this,Const.USERINFO,parseClassToJson)
708
-                AppSocket.onDestroy()
709
-                AppSocket.startSocket(ManageApplication.instance)
710
-            }else{
711
-                userBean.xhlyLoginMessage?.let {
712
-                    Toast(it)
713 717
                 }
714 718
             }
715 719
         }
716 720
 
721
+        /*viewModel.mainLoginData.observe(this){userBean->
722
+        }
723
+*/
717 724
         lifecycleScope.launch {
718 725
             isCreatFlag = true
719 726
             isDestroyFlag=false

+ 6
- 2
app/src/main/java/com/xhly/manageapp/viewmodel/BaseViewModel.kt Vedi File

@@ -53,8 +53,11 @@ open class BaseViewModel : CommonBaseViewModel() {
53 53
     val autoAppData: Flow<AutoAppBean?> = autoAppResult.asStateFlow()
54 54
 
55 55
 
56
-    private val mainLoginResult=MutableLiveData<UserBean>()
57
-    val mainLoginData:LiveData<UserBean> =mainLoginResult
56
+    /*private val mainLoginResult=MutableLiveData<UserBean>()
57
+    val mainLoginData:LiveData<UserBean> =mainLoginResult*/
58
+
59
+    private val mainLoginResult = MutableStateFlow<UserBean?>(null)
60
+    val mainLoginData: Flow<UserBean?> = mainLoginResult.asStateFlow()
58 61
     //标记修改登录信息失败,失败3次则不再继续
59 62
     var editNum=0
60 63
 
@@ -65,6 +68,7 @@ open class BaseViewModel : CommonBaseViewModel() {
65 68
                 val postLogin = loginService.postLoginEdit(loginStudentBean)
66 69
                 if (postLogin.code==0){
67 70
                     if (postLogin.obj!=null){
71
+                        LogShow("修改登录信息成功11"+postLogin.obj)
68 72
                         mainLoginResult.value=postLogin.obj
69 73
                     }
70 74
                 }else{

Loading…
Annulla
Salva