[发明专利]一种基于Android的Handler防内存泄漏装置及方法在审
申请号: | 201610929424.5 | 申请日: | 2016-10-31 |
公开(公告)号: | CN106598725A | 公开(公告)日: | 2017-04-26 |
发明(设计)人: | 张磊 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/54 |
代理公司: | 湖北武汉永嘉专利代理有限公司42102 | 代理人: | 王丹,许美红 |
地址: | 430073 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 android handler 内存 泄漏 装置 方法 | ||
技术领域
本发明属于Android系统安全领域,具体涉及一种基于Android的Handler防内存泄漏装置及方法。
背景技术
在Android软件开发中或多或少会使用到多线程技术,在使用多线程技术的时候就有一个问题点的引出,那就是子线程和主线程是如何进行通信的。Android给我们提供了一个比较好用的工具Handler,通过Handler这个工具在子线程中发送消息给主线程,主线程接收到子线程的消息后,根据消息的不同类型会做不同的操作。
也就是说Handler主要是通过消息机制来使得主线程和子线程进行通信。Handler这种消息机制确实解决了子线程和主线程通信的问题,但是却又一个潜在的风险,使用上稍不注意就有可能会造成内存泄漏的风险。
内存泄漏会给系统带来什么问题呢。手机上内存本身是属于比较紧张的资源,内存资源是有限的,内存泄漏指的就是那些曾经使用过,现在已经没有用了的资源,并没有及时释放掉该部分内存,且该部分资源一直在内存中存在,这块区域既不能使用也不会被释放。由于这块内存一直被占用且不能被及时释放掉,所以导致其他情况下需要再次申请内存的时候却申请不到足够的内存空间就会出现系统卡顿,严重时候可能会出现应用崩溃等后果。由此可见内存泄漏给我们带来了非常不好结果。
发明内容
本发明要解决的技术问题是:提供一种基于Android的Handler防内存泄漏装置及方法,在子线程和主线程正常通信的前提下避免内存的泄漏。
本发明为解决上述技术问题所采取的技术方案为:一种基于Android的Handler防内存泄漏装置,其特征在于:它包括:
异步Runnable请求接收模块,用于接收异步任务的Runnable请求;
同步模块,用于采用弱引用方法同步保存所有接收到的异步任务的Runnable请求;
异步请求执行模块,用于执行异步任务的Runnable请求,判断是否有消息要发送;
子线线程执行结束模块,用于在没有消息要发送时,结束子线线程;
消息发送模块,用于在有消息要发送时,发送消息及消息与异步线程的弱引用关系;
消息分发模块,用于存储消息及消息与异步线程的弱引用关系,并按照消息的时间顺序发送给主线程处理。
按上述装置,所述的同步模块中包含双向链表,用于存储所述的异步任务的Runnable请求。
按上述装置,所述的同步模块中还存储有线程的优先级,用于按照优先级移出异步任务的Runnable请求。
按上述装置,所述的同步模块中包括有锁模块,用于实现同步保存;锁模块包括:
锁获取模块,用于在接收到新的异步任务的Runnable请求时,获取锁的所有权;
操作模块,用于在获取到锁的所有权时对所述的新的异步任务的Runnable请求进行存储或移出操作;
锁释放模块,用于在存储或移出操作完成时,释放锁的所有权。
按上述装置,所述的消息包括及时消息和延时消息;
所述的消息分发模块中设有消息队列和定时器;所述的定时器用于定时,当定时器超时后将延时消息发送到消息队列中;所述的及时消息被直接放入消息队列;所述的消息队列用于按照消息进入的先后顺序有序的发送给主线程处理。
一种基于Android的Handler防内存泄漏方法,其特征在于:它包括以下步骤:
接收异步任务的Runnable请求;
采用弱引用方法同步保存所有接收到的异步任务的Runnable请求;
执行异步任务的Runnable请求,判断是否有消息要发送;
在没有消息要发送时,结束子线线程;
在有消息要发送时,发送消息及消息与异步线程的弱引用关系;
存储消息及消息与异步线程的弱引用关系,并按照消息的时间顺序发送给主线程处理。
按上述方法,采用双向链表的方式存储所述的异步任务的Runnable请求。
按上述方法,存储所述的异步任务的Runnable请求后,按照优先级移出异步任务的Runnable请求。
按上述方法,实现同步保存的具体方式为:
在接收到新的异步任务的Runnable请求时,获取锁的所有权;
在获取到锁的所有权时对所述的新的异步任务的Runnable请求进行存储或移出操作;
在存储或移出操作完成时,释放锁的所有权。
按上述方法,所述的消息包括及时消息和延时消息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610929424.5/2.html,转载请声明来源钻瓜专利网。