【Android】kotlin - 异步方法里调用delay 延时器和toast的问题

需求

onCreate生命周期里, 调用一个异步方法, 网络请求访问成功的话, 首先弹出toast, 2.5秒后自动返回到上一页

遇到的问题

kotlin 复制代码
	override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 在 onCreate 中启动协程
        coroutineScope.launch {
            updateInfo()
        }
    }

    private suspend fun updateInfo() {
        try {
            // 模拟网络请求
            val response = apiService.getData()

            if (response) {
                // 这样写会报在主线程内需要写Loop.parse() 和 Loop.loop(), 直接白屏返回到上一页
                // 但是加了Loop后, delay后面不会再执行, 也就是提示完不会返回到上一页
                Toast.makeText(
                    this@UpdateInfoActivity,
                    "Submitted Successfully",
                     Toast.LENGTH_SHORT
                 ).show()
                // 延迟 3 秒后返回上一页
                delay(3000L)
                finish()
            } else {
                // 处理错误
            }
        } catch (e: Exception) {
            // 处理异常
        }
    }

解决办法

把toast放在runOnUiThread{}里面, dalay()放到外面

kotlin 复制代码
                if (retCode == "0") {
                    runOnUiThread {
                        Toast.makeText(
                            this@MyActivity,
                            "Submitted Successfully",
                            Toast.LENGTH_SHORT
                        ).show()
                    }
                    delay(2500L)
                    finish()
                }

完美解决~!

相关推荐
雨白15 小时前
深入理解 Kotlin 协程 (七):画地为营,解构协程作用域与父子羁绊
kotlin
李少兄15 小时前
MySQL分页重复问题深度剖析
android·数据库·mysql
_李小白16 小时前
【android opencv学习笔记】Day 24: 最大稳定极值区域
android·opencv·学习
问心无愧051317 小时前
ctf show web入门257
android·前端·笔记
张小潇17 小时前
AOSP15 WMS/AMS系统开发 - 远程动画 (ShellAnimation) 源码深度分析
android
唐青枫17 小时前
Kotlin Lambda 表达式详解:从基础语法到实战封装
kotlin
朱涛的自习室18 小时前
30天11万行代码,我用 Trae 和 Gemini 造了个 AI 测试引擎
android·前端·人工智能
Digitally18 小时前
如何删除三星 Galaxy 手机中的重复音乐?
android
ch_ziyuan18 小时前
2026新优化神马TV8.5影视点播系统保姆级搭建教程:三后台配置+反编译修改
android·ios·php
帅次18 小时前
Jetpack Compose 动画实战:animateFloatAsState、AnimatedVisibility 与 graphicsLayer 避坑
android·kotlin·gradle·android jetpack