CN103902318A - 基于Android平台的图片加载方法 - Google Patents

基于Android平台的图片加载方法 Download PDF

Info

Publication number
CN103902318A
CN103902318A CN201210583612.9A CN201210583612A CN103902318A CN 103902318 A CN103902318 A CN 103902318A CN 201210583612 A CN201210583612 A CN 201210583612A CN 103902318 A CN103902318 A CN 103902318A
Authority
CN
China
Prior art keywords
picture
function
address
memory
image data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201210583612.9A
Other languages
English (en)
Inventor
于忠清
王兵
顾微微
翟伟伟
崔九梅
王爱玲
赵红雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qingdao Haiersoft Co Ltd
Original Assignee
Qingdao Haiersoft Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qingdao Haiersoft Co Ltd filed Critical Qingdao Haiersoft Co Ltd
Priority to CN201210583612.9A priority Critical patent/CN103902318A/zh
Publication of CN103902318A publication Critical patent/CN103902318A/zh
Pending legal-status Critical Current

Links

Abstract

本发明涉及一种图片加载方法,尤其涉及一种基于Android平台的图片加载方法。本发明的基于Android平台的图片加载方法,包括解决加载大量图片的时候界面卡住和内存不够的流程。本发明的基于Android平台的图片加载方法针对图片列表显示慢的问题,本发明中使用了异步加载图片的方法,加快了图片列表的显示速度,并且使得列表滚动的顺滑性大幅提高。

Description

基于Android平台的图片加载方法
技术领域
本发明涉及一种图片加载方法,尤其涉及一种基于Android平台的图片加载方法。
背景技术
Android平台在当今社会中的应用越来越广,Android平台可应用于多种终端,如手机、平板、智能电视、机顶盒等。基于Android平台的应用程序也越来越多,并且很多都会频繁的处理图片数据。在Android平台下,系统会为每一个应用程序开启一个虚拟机进程,并为其分配指定大小的内存,当有大量图片加载到内存中时就会造成内存溢出,同时应用程序崩溃。当有大量图片需要同时显示的时候,应用程序会去读取图片,当图片全部读取完成后才会完成显示,这样就造成了界面卡顿的现象。
发明内容
本发明的技术效果能够克服上述缺陷,提供一种基于Android平台的图片加载方法,其解决加载大量图片时遇到的相关问题,如加载大量图片时会导致应用卡住,大量图片会导致内存不够,从而使应用强行退出,加载网络图片时速度会变得特别慢。在该发明中解决了以上问题,使应用的使用体验流畅。
为实现上述目的,本发明采用如下技术方案:其包括解决加载大量图片的时候界面卡住和内存不够的流程,
其中,解决加载大量图片的时候界面卡住的步骤如下:
(1)继承相应的适配器类;
(2)重写类中的getView()函数,该函数返回一个View对象,列表控件或网
格控件会把该对象加载到相应的项目中;
(3)在getView()函数中,首先会把图片的地址,即图片的URL使用setTag()函数,给正在处理的ImageView对象设置标签,使得可以通过图片地址找到该ImageView对象;
(4)调用图片加载的函数,来获取图片地址所对应的图片数据,并且在其中设置回调函数,该回调函数实现的功能是,以图片地址为标签来查找相应的对象,找到之后将相应的图片数据加载到对象中;
其中,解决内存不够的流程在图片加载函数中,定义图片地址到图片数据的映射表的时候,把保存图片数据的内存类型声明为软引用类型SoftReference,该类型的内存会在系统内存不够的情况下由系统强制回收。
应用加载大量图片的时候,界面会卡住,无法操作,解决思路:使用异步加载技术,先使界面显示出来,然后使用新开的线程来更新界面中的相关控件。
应用显示大量图片的时候,导致内存不够,应用强行退出,解决思路:使用软引用SoftReference类型来保存图片到内存,在内存不够时,使系统可以自行回收用不到的图片所占内存。加载图片的缩略图。
该技术主要应用于android应用需要加载大量网络图片的情况。同样适用于加载大量本地图片的情况。当android设备内存较小的时候,也可以使用该技术来避免内存不够的情况。
本发明的基于Android平台的图片加载方法针对图片列表显示慢的问题,本发明中使用了异步加载图片的方法,加快了图片列表的显示速度,并且使得列表滚动的顺滑性大幅提高。针对内存不够的问题,本发明中使用了将内存声明为SoftReference类型的方法,使得该片内存可在内存不够的时候由系统强制回收,减少了内存占用。同时,采用了加载图片缩略图的方法,进一步减少图片在内存中的占用。使用以上两种方法,避免了随时因为内存不够带来的程序崩溃问题。
具体实施方式
本发明的基于Android平台的图片加载方法,包括解决加载大量图片的时候界面卡住和内存不够的流程。
针对第一个技术问题,以下是具体的技术方案:
在android应用中加载大量图片一般会用到列表控件以及网格控件,在显示图片的时候需要为其设置相应的适配器,在该发明中通过重写适配器来实现异步加载图片。
首先,继承相应的适配器类。
然后,重写类中的getView()函数,该函数返回一个View对象,列表控件或网格控件会把该对象加载到相应的项目中。
在getView()函数中,首先会把图片的地址,即图片的URL使用setTag()函数,给正在处理的ImageView对象设置标签,使得可以通过图片地址找到该ImageView对象。
然后会调用图片加载的函数,来获取图片地址所对应的图片数据,并且在其中设置回调函数,该回调函数实现的功能是,以图片地址为标签来查找相应的对象,找到之后将相应的图片数据加载到对象中。
该图片加载函数有两类返回值,一种不为空,这时会设置获取到的数据到ImageView对象上,另一种为空,这时会设置一个默认的图片到对象上。
列表控件或网格控件会为可视范围内的项目调用getView(),使用上述方法之后,getView()可以快速返回,从而使页面迅速显示出来,相比于传统的加载方法,速度极快。
图片加载函数的内部是这样实现的,首先需要定义一个图片地址到图片数据的映射表,在收到图片地址之后首先去表里查询是否有该地址,如果有则查询对应的数据是否为空,不为空则表示需要的图片在缓存中,这时候把该数据返回。否则表示该数据不在缓存中,需要另外加载。开启新线程从网络获取图片,然后将该图片以及相应的地址加入到映射表,最后调用回调函数,把数据设置到图片地址对应的对象上,完成图片加载。
针对第二个技术问题,具体解决方案如下:
在图片加载函数中,定义图片地址到图片数据的映射表的时候,把保存图片数据的内存类型声明为软引用类型SoftReference,该类型的内存会在系统内存不够的情况下由系统强制回收,因此不会造成内存原因的程序崩溃。
相比于使用强引用或弱引用的方法,该方法可以及时回收内存,避免程序崩溃。
此外如果加载的单张图片体积过大,仍然会造成内存不够用,程序崩溃,所以在本发明中使用了加载缩略图的技术。在从网络获取图片的时候需要两步操作,第一次是在获取到图片的流之后,仅从中读取图片的长宽,而不读取实际的数据,然后查看图片的长宽是否超标,如果超标,则计算缩小后的长宽,最后第二次获取图片的流,并从中读取指定比例的图片数据。

Claims (2)

1.一种基于Android平台的图片加载方法,其特征在于,包括解决加载大量图片的时候界面卡住和内存不够的流程,
其中,解决加载大量图片的时候界面卡住的步骤如下:
(1)继承相应的适配器类;
(2)重写类中的getView()函数,该函数返回一个View对象,列表控件或网
格控件会把该对象加载到相应的项目中;
(3)在getView()函数中,首先会把图片的地址,即图片的URL使用setTag()函数,给正在处理的ImageView对象设置标签,使得可以通过图片地址找到该ImageView对象;
(4)调用图片加载的函数,来获取图片地址所对应的图片数据,并且在其中设置回调函数,该回调函数实现的功能是,以图片地址为标签来查找相应的对象,找到之后将相应的图片数据加载到对象中;
其中,解决内存不够的流程在图片加载函数中,定义图片地址到图片数据的映射表的时候,把保存图片数据的内存类型声明为软引用类型SoftReference,该类型的内存会在系统内存不够的情况下由系统强制回收。
2.根据权利要求1所述的基于Android平台的图片加载方法,其特征在于,图片加载的函数首先需要定义一个图片地址到图片数据的映射表,在收到图片地址之后首先去表里查询是否有该地址,如果有则查询对应的数据是否为空,不为空则表示需要的图片在缓存中,这时候把该数据返回;否则表示该数据不在缓存中,需要另外加载;开启新线程从网络获取图片,然后将该图片以及相应的地址加入到映射表,最后调用回调函数,把数据设置到图片地址对应的对象上,完成图片加载。
CN201210583612.9A 2012-12-30 2012-12-30 基于Android平台的图片加载方法 Pending CN103902318A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210583612.9A CN103902318A (zh) 2012-12-30 2012-12-30 基于Android平台的图片加载方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210583612.9A CN103902318A (zh) 2012-12-30 2012-12-30 基于Android平台的图片加载方法

Publications (1)

Publication Number Publication Date
CN103902318A true CN103902318A (zh) 2014-07-02

Family

ID=50993659

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210583612.9A Pending CN103902318A (zh) 2012-12-30 2012-12-30 基于Android平台的图片加载方法

Country Status (1)

Country Link
CN (1) CN103902318A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035668A (zh) * 2014-06-24 2014-09-10 广州金山网络科技有限公司 一种异步加载数据滑动性能的优化方法及系统、移动终端
CN104461661A (zh) * 2014-12-30 2015-03-25 中科创达软件股份有限公司 一种图片资源加载方法及系统
CN105046640A (zh) * 2015-05-14 2015-11-11 深圳市美贝壳科技有限公司 图片内存管理方法及装置
CN105589902A (zh) * 2014-12-02 2016-05-18 中国银联股份有限公司 一种通过浏览器访问服务器的页面的方法
CN105989166A (zh) * 2015-03-04 2016-10-05 阿里巴巴集团控股有限公司 瀑布流式显示对象的方法、装置、系统及电子设备
CN106708583A (zh) * 2016-12-30 2017-05-24 广州华多网络科技有限公司 应用加载方法和装置
WO2018113725A1 (zh) * 2016-12-21 2018-06-28 北京奇虎科技有限公司 加载图片资源的方法、装置、程序及介质
CN108268484A (zh) * 2016-12-30 2018-07-10 中移(杭州)信息技术有限公司 一种图片加载方法及终端
CN108549562A (zh) * 2018-03-16 2018-09-18 阿里巴巴集团控股有限公司 一种图像加载的方法及装置
CN110930496A (zh) * 2019-11-19 2020-03-27 北京达佳互联信息技术有限公司 视图绘制方法、装置、电子设备和存储介质
US11132766B2 (en) 2017-10-09 2021-09-28 Huawei Technologies Co., Ltd. Image processing method and device using multiple layers of an operating system

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
AIKONGMENG: "《http://android.tgbus.com/Android/androidnews/201204/421244.shtml》", 14 April 2012 *
LANPY88: "《http://blog.csdn.net/lanpy88/article/details/6671915》", 9 August 2011 *
TOM VAN ZUMMEREN: "《http://blog.trifork.com/2009/09/17/exploring-the-world-of-android-part-2》", 17 September 2009 *
天才小鱼: "《http://blog.csdn.net/geniusxiaoyu/article/details/7470163》", 17 April 2012 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035668A (zh) * 2014-06-24 2014-09-10 广州金山网络科技有限公司 一种异步加载数据滑动性能的优化方法及系统、移动终端
CN105589902A (zh) * 2014-12-02 2016-05-18 中国银联股份有限公司 一种通过浏览器访问服务器的页面的方法
CN104461661A (zh) * 2014-12-30 2015-03-25 中科创达软件股份有限公司 一种图片资源加载方法及系统
CN105989166B (zh) * 2015-03-04 2019-06-21 阿里巴巴集团控股有限公司 瀑布流式显示对象的方法、装置、系统及电子设备
CN105989166A (zh) * 2015-03-04 2016-10-05 阿里巴巴集团控股有限公司 瀑布流式显示对象的方法、装置、系统及电子设备
CN105046640A (zh) * 2015-05-14 2015-11-11 深圳市美贝壳科技有限公司 图片内存管理方法及装置
WO2018113725A1 (zh) * 2016-12-21 2018-06-28 北京奇虎科技有限公司 加载图片资源的方法、装置、程序及介质
CN106708583A (zh) * 2016-12-30 2017-05-24 广州华多网络科技有限公司 应用加载方法和装置
CN108268484A (zh) * 2016-12-30 2018-07-10 中移(杭州)信息技术有限公司 一种图片加载方法及终端
US11132766B2 (en) 2017-10-09 2021-09-28 Huawei Technologies Co., Ltd. Image processing method and device using multiple layers of an operating system
CN108549562A (zh) * 2018-03-16 2018-09-18 阿里巴巴集团控股有限公司 一种图像加载的方法及装置
CN110930496A (zh) * 2019-11-19 2020-03-27 北京达佳互联信息技术有限公司 视图绘制方法、装置、电子设备和存储介质
CN110930496B (zh) * 2019-11-19 2021-01-26 北京达佳互联信息技术有限公司 视图绘制方法、装置、电子设备和存储介质

Similar Documents

Publication Publication Date Title
CN103902318A (zh) 基于Android平台的图片加载方法
CN103544207B (zh) 一种图片加载显示的方法与系统
US20150268850A1 (en) Method of Implementing Screen Adaptation for Owner-Drawn Elements and Apparatus
CN103136721B (zh) 内联图像旋转
WO2014106410A1 (en) Method for terminal acceleration, terminal and storage medium
CN103763433A (zh) 终端应用的运行控制方法及系统
CN103077075B (zh) 显示后台运行应用的方法及其终端
CN107506482A (zh) 一种基于流式处理框架的大规模数据处理装置及方法
CN104932994B (zh) 一种数据处理方法及装置
CN104778222A (zh) 基于usb存储设备的媒体库建立及更新方法
CN107729137A (zh) 服务器、区块链验签解密的方法及存储介质
CN102629254A (zh) 图片快速读取方法
CN105046640A (zh) 图片内存管理方法及装置
CN106055294A (zh) 一种图层合成优化方法和装置
CN103425234A (zh) 动态调节图像处理性能的方法及显示终端
CN111145074A (zh) 全液晶仪表图像渲染方法
CN104536780A (zh) 一种电子游戏资源高效加载方法及系统
CN104702833A (zh) 一种信息处理的方法及一种电子设备
CN103914223A (zh) 终端应用界面的生成方法及装置
CN103747191A (zh) 网络交互式高清字符叠加系统
CN107070809A (zh) 一种大规模传感器数据的实时转发方法
CN110264543A (zh) 拼接画面的边框绘制方法、装置及存储介质
CN103455293B (zh) 分屏异步处理的实现方法及系统
CN205920443U (zh) 一种显示屏与壳体的结合结构
CN101261580B (zh) 一种处理数据的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140702