CN103902318A - 基于Android平台的图片加载方法 - Google Patents
基于Android平台的图片加载方法 Download PDFInfo
- 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
Links
Abstract
本发明涉及一种图片加载方法,尤其涉及一种基于Android平台的图片加载方法。本发明的基于Android平台的图片加载方法,包括解决加载大量图片的时候界面卡住和内存不够的流程。本发明的基于Android平台的图片加载方法针对图片列表显示慢的问题,本发明中使用了异步加载图片的方法,加快了图片列表的显示速度,并且使得列表滚动的顺滑性大幅提高。
Description
技术领域
本发明涉及一种图片加载方法,尤其涉及一种基于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平台的图片加载方法,其特征在于,图片加载的函数首先需要定义一个图片地址到图片数据的映射表,在收到图片地址之后首先去表里查询是否有该地址,如果有则查询对应的数据是否为空,不为空则表示需要的图片在缓存中,这时候把该数据返回;否则表示该数据不在缓存中,需要另外加载;开启新线程从网络获取图片,然后将该图片以及相应的地址加入到映射表,最后调用回调函数,把数据设置到图片地址对应的对象上,完成图片加载。
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)
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 |
-
2012
- 2012-12-30 CN CN201210583612.9A patent/CN103902318A/zh active Pending
Non-Patent Citations (4)
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)
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 |