Explorar el Código

fix(ui): 解决离线命令监听器的UI线程问题

- 在FoActivity、InspectionActivity、ReviewActivity和WelcomeActivity中为离线命令处理添加runOnUiThread包装
- 修复TaskListActivity中的分页逻辑,将lastVisible改为nextPosition进行边界检查
- 更新TaskListActivity中的任务列表点击事件,调整when条件的取模运算和页面跳转逻辑
- 在TaskListActivity中添加调试日志用于跟踪下一页操作
- 统一所有活动中的离线命令处理确保在主线程中执行finish()和startActivity()操作
徐勤民 hace 2 días
padre
commit
3687ba629b

+ 6 - 4
app/src/main/java/com/nova/brain/glass/ui/FoActivity.kt

@@ -11,9 +11,11 @@ class FoActivity : BaseActivity<ActivityFoBinding>() {
     override fun fullscreen(): Boolean = true
     private val listener = object : OfflineCmdListener {
         override fun onOfflineCmd(cmd: String) {
-            when( cmd){
-                "退出","返回","退回"->{
-                    finish()
+            runOnUiThread {
+                when( cmd){
+                    "退出","返回","退回"->{
+                        finish()
+                    }
                 }
             }
         }
@@ -27,4 +29,4 @@ class FoActivity : BaseActivity<ActivityFoBinding>() {
         super.onDestroy()
         OfflineCmdServiceHelper.removeOnLineListener(listener)
     }
-}
+}

+ 12 - 10
app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt

@@ -12,15 +12,17 @@ class InspectionActivity : BaseActivity<ActivityReviewBinding>() {
     override fun fullscreen(): Boolean = true
     private val listener = object : OfflineCmdListener {
         override fun onOfflineCmd(cmd: String) {
-            when( cmd){
-                "退出","返回","退回"->{
-                    finish()
-                }
-                "驳回","拒绝","不同意"->{
-                    finish()
-                }
-                "同意","通过"->{
-                    finish()
+            runOnUiThread {
+                when( cmd){
+                    "退出","返回","退回"->{
+                        finish()
+                    }
+                    "驳回","拒绝","不同意"->{
+                        finish()
+                    }
+                    "同意","通过"->{
+                        finish()
+                    }
                 }
             }
         }
@@ -34,4 +36,4 @@ class InspectionActivity : BaseActivity<ActivityReviewBinding>() {
         super.onDestroy()
         OfflineCmdServiceHelper.removeOnLineListener(listener)
     }
-}
+}

+ 11 - 9
app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt

@@ -20,15 +20,17 @@ class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, Ac
 
     private val listener = object : OfflineCmdListener {
         override fun onOfflineCmd(cmd: String) {
-            when( cmd){
-                "退出","返回","退回"->{
-                    finish()
-                }
-                "驳回","拒绝","不同意"->{
-                    finish()
-                }
-                "同意","通过"->{
-                    finish()
+            runOnUiThread {
+                when( cmd){
+                    "退出","返回","退回"->{
+                        finish()
+                    }
+                    "驳回","拒绝","不同意"->{
+                        finish()
+                    }
+                    "同意","通过"->{
+                        finish()
+                    }
                 }
             }
         }

+ 20 - 11
app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt

@@ -14,6 +14,7 @@ import com.xuqm.base.adapter.CommonPagedAdapter
 import com.xuqm.base.adapter.ViewHolder
 import com.xuqm.base.common.LogHelper
 import com.xuqm.base.common.ToolsHelper
+import com.xuqm.base.extensions.log
 import com.xuqm.base.ui.BaseListFormLayoutActivity
 
 class TaskListActivity :
@@ -33,17 +34,18 @@ class TaskListActivity :
 
     private val offlineCmdListener = object : OfflineCmdListener {
         override fun onOfflineCmd(cmd: String) {
-            when (cmd) {
-                "下一页", "翻页", "查看下一页", "继续翻页", "继续下一页" -> {
-                    toNext()
-                }
-                "上一页", "查看上一页", "继续上一页" -> {
-                    toPre()
+            runOnUiThread {
+                when (cmd) {
+                    "下一页", "翻页", "查看下一页", "继续翻页", "继续下一页" -> {
+                        "--------------->".log()
+                        toNext()
+                    }
+                    "上一页", "查看上一页", "继续上一页" -> {
+                        toPre()
+                    }
                 }
             }
         }
-
-
     }
 
     private fun toPre() {
@@ -65,8 +67,9 @@ class TaskListActivity :
         if (layoutManager != null) {
             val lastVisible = layoutManager.findLastVisibleItemPosition()
             LogHelper.d("lastVisible:$lastVisible")
-            if (lastVisible < adapter.itemCount) {
-                layoutManager.scrollToPositionWithOffset(lastVisible, 0)
+            val nextPosition = lastVisible + 1
+            if (nextPosition < adapter.itemCount) {
+                layoutManager.scrollToPositionWithOffset(nextPosition, 0)
             } else {
                 ToolsHelper.showMessage("没有下一页了")
             }
@@ -89,13 +92,19 @@ class TaskListActivity :
                 .setText(R.id.tv_title, "${position}.张三提交的出差预算申请审核任务,从上海到北京,3月23开始3月24结束,预算金额¥1800元。【已逾期】")
                 .setClickListener(R.id.tv_title
                 ) {
-                    when(position%5){
+                    when(position%4){
                         0 -> {
                             startActivity(Intent(this@TaskListActivity, FoActivity::class.java))
                         }
                         1 -> {
                             startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java))
                         }
+                        2 -> {
+                            startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java))
+                        }
+                        3 -> {
+                            startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java))
+                        }
                     }
                 }
         }

+ 6 - 4
app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt

@@ -25,9 +25,11 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
 
     private val offlineCmdListener = object : OfflineCmdListener {
         override fun onOfflineCmd(cmd: String) {
-            when (cmd) {
-                "任务列表", "查看任务", "查看任务列表" -> {
-                    startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
+            runOnUiThread {
+                when (cmd) {
+                    "任务列表", "查看任务", "查看任务列表" -> {
+                        startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
+                    }
                 }
             }
         }
@@ -46,4 +48,4 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
     }
 
 
-}
+}