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

- 在FoActivity、InspectionActivity、ReviewActivity和WelcomeActivity中为离线命令处理添加runOnUiThread包装
- 修复TaskListActivity中的分页逻辑,将lastVisible改为nextPosition进行边界检查
- 更新TaskListActivity中的任务列表点击事件,调整when条件的取模运算和页面跳转逻辑
- 在TaskListActivity中添加调试日志用于跟踪下一页操作
- 统一所有活动中的离线命令处理确保在主线程中执行finish()和startActivity()操作
这个提交包含在:
徐勤民 2026-04-14 16:34:36 +08:00
父节点 f35781ec48
当前提交 3687ba629b
共有 5 个文件被更改,包括 55 次插入38 次删除

查看文件

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

查看文件

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

查看文件

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

查看文件

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

查看文件

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