logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

214.内存优化-内存泄漏-本质原因:已经无用的对象未及时回收-静态集合类持有的对象

因为这些组件本身的生命周期较短,如果被直接存储到全局静态集合中,在页面切换或销毁后,因静态集合的全局性而无法释放,会导致内存泄漏。由于静态变量的生命周期与应用进程一致,如果我们在静态集合中放入不再需要的对象(例如 Activity、Fragment、Context 对象或其它短生命周期对象),这些对象会一直存活在内存中,无法被 GC 回收,最终导致内存泄漏。静态集合也经常用于全局缓存数据,如果缓存

#开发语言
179.WebSocket

而对于需要实时双向通信或持续数据推送的场景,WebSocket 更为适合,因为它提供了建立一次连接后便可持续双向通信的能力,减少了建立连接的开销和延时。建议使用 Chrome 浏览器的开发者工具、Postman 的 WebSocket 调试功能,或者专门的 WebSocket 客户端工具(如 “WebSocket King”)来测试服务端的 WebSocket 接口,并与客户端程序进行对比调试,确

文章图片
#websocket#网络协议#网络
216.内存优化-内存泄漏-本质原因:已经无用的对象未及时回收-动画未及时取消

举个例子,假设一个属性动画不断修改视图的属性并注册了监听器,那么即使页面不再显示,该动画依然通过内部引用持有视图对象,而视图对象又通常会隐式持有 Activity 的上下文,这样就形成了引用链,导致垃圾回收器无法回收相关对象,从而发生内存泄漏。其中,动画未及时取消就是一个常见的内存泄漏隐患,尤其是在页面(Activity 或 Fragment)销毁时没有停止动画操作,从而导致动画对象继续存活并间接

#kotlin
101.协程的基本用法 (Android)

协程启动:推荐在 Android 中使用 lifecycleScope 来启动协程,这样能在 Activity/Fragment 生命周期内自动取消协程任务,避免内存泄漏。线程切换:使用将耗时任务放入 IO 线程,处理完毕后返回主线程更新 UI。并发处理:使用async启动并发任务,通过await()获取结果,能提高执行效率。

文章图片
#android
123.Parcelable方式

Parcelable 是 Android 提供的一种高效的序列化机制,主要用于在组件间传递数据(比如 Activity、Fragment、Service 等之间),它比 Java 的 Serializable 接口性能更好,因为 Parcelable 的实现完全由开发者控制,避免了使用反射带来的开销。如果不使用 @Parcelize,也可以手动实现 Parcelable。下面我们详细讲解如何使用

文章图片
77.从相册中选择照片

下面是针对高版本 Android(Android 13 及以上)需要请求新权限的问题,完整的 MainActivity 代码示例已经做了修改,增加了对 READ_MEDIA_IMAGES 权限的检查。在清单文件中,我们同时添加了 READ_EXTERNAL_STORAGE(兼容低版本)和 READ_MEDIA_IMAGES 权限,以便于不同 API 版本均能正常运行。

文章图片
161. Handler 与 Looper 的死循环机制以及二者的密切关联

自定义线程,在 run() 方法中先调用 Looper.prepare() 来初始化 MessageQueue,然后创建 Handler,再调用 Looper.loop() 进入消息循环。────────────────────────────────────────────── 【三、完整示例讲解:Handler 与 Looper 的死循环机制】─────────────────────────

文章图片
#opencv#人工智能
194.lifecycleScope

lifecycleScope 是一个由 Android 提供的扩展属性,它为 LifecycleOwner(例如 Activity、Fragment)提供了一个预定义的 CoroutineScope(协程作用域)。通过这个作用域创建的协程会与 LifecycleOwner 的状态同步,当该组件销毁时,作用域内的所有协程会自动取消,避免内存泄露或一些由于组件生命周期导致的异常问题。

#android
101.协程的基本用法 (Android)

协程启动:推荐在 Android 中使用 lifecycleScope 来启动协程,这样能在 Activity/Fragment 生命周期内自动取消协程任务,避免内存泄漏。线程切换:使用将耗时任务放入 IO 线程,处理完毕后返回主线程更新 UI。并发处理:使用async启动并发任务,通过await()获取结果,能提高执行效率。

文章图片
#android
134.Online Shop App 【MVVM和Firebase】

包名修改: 我的项目名称是219.2。(什么资源文件之类的见视频评论区)

文章图片
#android
    共 30 条
  • 1
  • 2
  • 3
  • 请选择