
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
console.info('登录失败:', result.message);console.error('请求失败:', err);console.info('登录成功');
单例(Singleton)生命周期等于整个进程,如果单例里直接引用了 短生命周期对象(如 Activity、Service、Context 等),在这些对象销毁后单例仍然持有引用,就会造成 内存泄漏。如果单例里引用了 短生命周期对象(Activity、Service),那会导致泄漏,除非手动释放。如果保存了 Application Context,那就和进程同生共死,进程退出才销毁。在 Andro
不要把所有逻辑都放在 Main scope:在 Main 中包含大量 withContext(Dispatchers.IO) 可以,但更清晰的写法是 launch(Dispatchers.IO) 来执行后台任务并在结束时切到 Main 更新 UI。OkHttp 是在网络层处理的,与协程无直接关系,但在协程中使用 suspend 的 Retrofit 时,请确保 OkHttp 的拦截器不会阻塞主线程
val list = database.userDao().getAllUsers()// Room suspend 查询,会在IO线程执行。suspend 表示挂起函数,它本身不会创建新线程,但可以挂起当前协程,让协程切换到其他线程去执行耗时操作,然后恢复。database.userDao().getAllUsers()// 后台线程。.catch { e -> Log.e("DB", "查询失
在实时通讯、物联网、无人机遥控、设备上传、IM(即时通讯)等场景中,Socket 长连接是最关键的通信方式之一。Log.d("Socket", "收到消息:" + new String(msg));Log.e("Socket", "错误:" + e.getMessage());Log.d("Socket", "正在重连...");Android 中实现稳定的 Socket 长连接:自动重连、心跳机







