# ohos-weak-handler **Repository Path**: chinasoft_ohos/ohos-weak-handler ## Basic Information - **Project Name**: ohos-weak-handler - **Description**: 弱引用内存安全的 Handler - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-04-14 - **Last Updated**: 2023-03-09 ## Categories & Tags **Categories**: harmonyos-toolkit **Tags**: None ## README # ohos-weak-handler #### 项目介绍 - 项目名称:ohos-weak-handler - 所属系列:openharmony第三方组件适配移植 - 功能:Memory safer implementation of ohos.eventhandler.EventHandler - 项目移植状态:主功能完成 - 调用差异:无 - 开发版本:sdk6,DevEco Studio2.2 beta1 - 基线版本:Release 1.2 #### 效果演示 ![sc1](weak-handler.gif) #### 安装教程 在moudle级别下的build.gradle文件中添加依赖 ``` // 添加maven仓库 repositories { maven { url 'https://s01.oss.sonatype.org/content/repositories/releases/' } } // 添加依赖库 dependencies { implementation 'com.gitee.chinasoft_ohos:ohos-weak-handler:1.0.1' } ``` 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 #### 使用说明 Problem Original implementation of Handler always keeps hard reference to handler in queue of execution. Any object in Message or Runnable posted to `ohos.eventhandler.EventHandler` will be hard referenced for some time. If you create anonymous Runnable and call to `postTask` with large timeout, that Runnable will be held in memory until timeout passes. Even if your Runnable seems small, it indirectly references owner class, which is usually something as big as Activity or Fragment. You can read more on our blog post. Solution `WeakHandler` is trickier than `ohos.eventhandler.EventHandler` , it will keep `WeakReferences` to runnables and messages, and GC could collect them once `WeakHandler` instance is not referenced any more. Usage Use WeakHandler as you normally would use Handler * Java 调用示例 ** ```java import com.badoo.mobileDemo.util.WeakHandler; public class ExampleAbility extends Ability { private WeakHandler handler; // We still need at least one hard reference to WeakHandler @Override public void onStart(Intent intent) { handler = new WeakHandler(); ... } private void onClick(Component view) { handler.postTask(new Runnable() { view.setVisibility(Component.VISIBLE); }, 5000); } } ``` #### 测试信息 CodeCheck代码测试无异常 CloudTest代码测试无异常 安全病毒安全检测通过 当前版本demo功能与原组件基本无差异 #### 版本迭代 - 1.0.1 #### 版权和许可信息 ``` Weak Handler is brought to you by Badoo Trading Limited and it is released under the MIT License. Created by Dmytro Voronkevych ##Blog Read more on our tech blog or explore our other open source projects ```