[发明专利]功能类使用Handler进行消息处理的方法和装置有效
申请号: | 201710625364.2 | 申请日: | 2017-07-27 |
公开(公告)号: | CN107515792B | 公开(公告)日: | 2020-11-10 |
发明(设计)人: | 王永川 | 申请(专利权)人: | 北京五八信息技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 杨贝贝;刘芳 |
地址: | 100083 北京市海淀区学清*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 功能 使用 handler 进行 消息 处理 方法 装置 | ||
本发明实施例提供一种功能类使用Handler进行消息处理的方法和装置。本发明功能类使用Handler进行消息处理的方法,包括:所述功能类接收业务处理请求消息;所述功能类通过第一Handler类和第二Handler类对所述业务处理请求消息进行处理;其中,所述第二Handler类弱引用所述第一Handler类,所述第二Handler类为原生Handler的子类。本发明实施例以简单的方式实现原生Handler到功能类的可达路径为弱可达,有效避免直接使用原生Handler导致功能类内存泄漏的问题,降低APP的崩溃率和OOM问题。
技术领域
本发明实施例涉及计算机技术,尤其涉及一种功能类使用Handler进行消息处理的方法和装置。
背景技术
消息处理程序(Handler)是安卓(Android)开发者进行消息传递的常用应用程序编程接口(Application Programming Interface,API),其主要用于异步消息的处理,当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理。然而随着开发者的使用不当或者不谨慎很容易引起内存泄漏问题,严重时会造成几MB的内存空间被占用,从而提高了内存溢出(Out Of Memory,OOM)的发生概率和应用程序(Application,APP)的崩溃概率。
为了避免在使用Handler引起的内存泄漏问题,可以在用户接口程序(Activity)中避免使用非静态内部类,将Handler声明为静态的,其存活期跟Activity的生命周期就无关了。同时通过弱引用的方式引入Activity,避免直接将Activity作为Context传入Handler,即使用静态内部类加弱引用(WeakReference)的方式。
然而,上述使用静态内部类加WeakReference的实现方式过于复杂,需要在每个使用Handler的地方都要声明一个静态内部类,如果需要多个Handler进行消息传递就需要声明多个,然后逐一进行实例化并且每次使用前判空,失去了原生Handler的简约性。
发明内容
本发明实施例提供一种功能类使用Handler进行消息处理的方法和装置,以简单的方式实现原生Handler到功能类的可达路径为弱可达,有效避免直接使用原生Handler导致功能类内存泄漏的问题,降低APP的崩溃率和OOM问题。
第一方面,本发明实施例提供一种功能类使用Handler进行消息处理的方法,包括:
所述功能类接收业务处理请求消息;
所述功能类通过第一Handler类和第二Handler类对所述业务处理请求消息进行处理;
其中,所述第二Handler类弱引用所述第一Handler类,所述第二Handler类为原生Handler的子类。
结合第一方面,在第一方面的一种可能的实现方式中,所述功能类接收业务处理请求消息之前,所述方法还包括:
创建所述第一Handler类,所述第一Handler类的属性包括调用所述第二Handler类。
结合第一方面或者第一方面任一种可能的实现方式,在第一方面的另一种可能的实现方式中,所述功能类接收业务处理请求消息之前,所述方法还包括:
创建所述第二Handler类,所述第二Handler类继承所述原生Handler类的所有属性和所有消息处理方法,且所述第二Handler类的属性还包括弱引用所述第一Handler类。
结合第一方面或者第一方面任一种可能的实现方式,在第一方面的另一种可能的实现方式中,所述第一Handler类和所述第二Handler类的可见性均为私有。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京五八信息技术有限公司,未经北京五八信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710625364.2/2.html,转载请声明来源钻瓜专利网。