CN103309749A - 一种基于安卓***图片资源的内存释放方法 - Google Patents
一种基于安卓***图片资源的内存释放方法 Download PDFInfo
- Publication number
- CN103309749A CN103309749A CN2013102548957A CN201310254895A CN103309749A CN 103309749 A CN103309749 A CN 103309749A CN 2013102548957 A CN2013102548957 A CN 2013102548957A CN 201310254895 A CN201310254895 A CN 201310254895A CN 103309749 A CN103309749 A CN 103309749A
- Authority
- CN
- China
- Prior art keywords
- activity
- picture
- resource
- bitmap
- internal memory
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种基于安卓***图片资源的内存释放方法,该方法包括,步骤一、把图片资源加载到内存,在Activity中生成资源图片的drawable或者bitmap对象;步骤二、动态加载控件图片资源,引用步骤一所生成的drawable或者bitmap对象;步骤三、Activity调用bitmap的recycle,把内存回收掉。该方法简单有效地解决了使用了大图片的Android应用内存溢出的问题,增加了应用的健壮性。
Description
技术领域
本发明涉及一种图片资源占用内存的内存释放方法,特别是涉及一种基于安卓***的图片资源占用内存的内存释放方法。
背景技术
在Android***中,用图片作为显示资源是常用的方式。有时候为了增加应用界面的美观会使用一些像素特别丰富的大片作为背景,或者按钮来显示。这样的做法提高了应用的美观程度,和易被用户接受的认可度。
这些图片资源可以作为,界面布局背景,图片控件资源,按钮背景等等。
在使用丰富大图片后虽然带了了很大的视觉感受,但是也带了内存消耗的麻烦,如果不能及时的把大图片消耗掉的内存给释放回收回来,就会造成内存泄露,当内存泄露到一定程度,应用就会内存不足,而出现内存溢出异常,并终止Android应用运行,对Android应用的健壮性和稳定性造成灾难性的影响,直接影响用户的使用感受。
针对上面列出的图片资源导致的Android应用出现内存泄露,从而出现应用崩溃的情况;本专利完全的杜绝了此类情况的发生,完全的回收图片使用过的内存。
发明内容
本发明要解决的技术问题是提供一种基于安卓***的图片资源占用内存的内存释放方法,该方法包括,步骤一、把图片资源加载到内存,在Activity中生成资源图片的drawable或者bitmap对象;步骤二、动态加载控件图片资源,引用步骤一所生成的drawable或者bitmap对象;步骤三、Activity调用bitmap的recycle,把内存回收掉。该方法简单有效地解决了使用了大图片的Android应用内存溢出的问题,增加了应用的健壮性。
本发明采用的技术方案如下:一种基于安卓***图片资源的内存释放方法,其特征在于,其方法步骤为:步骤一、把图片资源加载到内存,在Activity中生成资源图片的drawable或者bitmap对象;步骤二、动态加载控件图片资源,引用步骤一所生成的drawable或者bitmap对象;步骤三、Activity调用bitmap的recycle,把内存回收掉。
作为优选,所述步骤一中在Activity中生成资源图片的drawable或者bitmap对象的具体方法为:Activity调用android自带的BitmapFactory.decodeStream函数。
作为优选,所述步骤二中的引用采用的是软引用。
作为优选,所述方法步骤还包括:确保Activity被销毁。
作为优选,在用到Bitmap对象缓存图片的地方,把Bitmap对象声明为软引用。
作为优选,确保Activity被销毁的具体方法为:A、需要引用Context的地方用Application替换;B、销毁Activity时关闭子线程。
与现有技术相比,本发明的有益效果是:该方法简单有效地解决了使用了大图片的Android应用内存溢出的问题,增加了应用的健壮性。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本说明书中公开的所有特征,除了互相排除的特征以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
一种基于安卓***图片资源的内存释放方法,其特征在于,其方法步骤为:步骤一、把图片资源加载到内存,在Activity中生成资源图片的drawable或者bitmap对象;步骤二、动态加载控件图片资源,引用步骤一所生成的drawable或者bitmap对象;步骤三、Activity调用bitmap的recycle,把内存回收掉。
所述步骤一中在Activity中生成资源图片的drawable或者bitmap对象的具体方法为:Activity调用android自带的BitmapFactory.decodeStream函数。这样可以方便后面的手动释放内存。
所述步骤二中的引用采用的是软引用。用软引用引用生成的对象,好处是内存不足的时候,java虚拟机会自动释放这些对象占用的内存。
在用到Bitmap对象缓存图片的地方,把Bitmap对象声明为软引用。
如果你希望能随时取得某对象的信息,但又不想影响此对象的垃圾收集,那么你应该用软引用来记住此对象,而不是用一般的引用。软引用不但可以把对象缓存起来,也不会造成内存不足的错误(OutOfMemoryError)。
所以在用到Bitmap对象缓存图片的地方,需要把Bitmap对象声明为软引用。这样,在内存不足的时候,就可以回收这些缓存图片所占用的内存。
所述方法步骤还包括:确保Activity被销毁。Activity被销毁会触发图片资源回收,因此,还需确保Activity能被销毁。确保Activity能被销毁需要做到两点:一个是Activity不要被其他的地方引用,二是子线程要关闭掉。
确保Activity被销毁的具体方法为:A、需要引用Context的地方用Application替换;B、销毁Activity时关闭子线程。
当Activity销毁的时候,如果对其引用计数为0,该Activity可被顺利回收。当对Activity的引用没有被销毁,则Activity不能被回收,其引用的资源图片也不能回收。需要注意的地方是需要引用Context的地方最好用Application替换,Application是全局对象不会造成内存泄露。这样可以确保Activity不被其他的地方引用。
当在主线程中启用了子线程,当子线程未结束时,即使调用了主线程的onDestory方法也无法回收Activity,必须等到子线程结束,Activity才能被回收。所以,当子线程中出现了死循环,在主线程退出的时候一定要让子线程结束。所以需要在销毁Activity时关闭子线程。
Claims (6)
1.一种基于安卓***图片资源的内存释放方法,其特征在于,其方法步骤为:
步骤一、把图片资源加载到内存,在Activity中生成资源图片的drawable或者bitmap对象;
步骤二、动态加载控件图片资源,引用步骤一所生成的drawable或者bitmap对象;
步骤三、Activity调用bitmap的recycle,把内存回收掉。
2.根据权利要求1所述的方法,其特征在于,所述步骤一中在Activity中生成资源图片的drawable或者bitmap对象的具体方法为:Activity调用android自带的BitmapFactory.decodeStream函数。
3.根据权利要求1所述的方法,其特征在于,所述步骤二中的引用采用的是软引用。
4.根据权利要求1所述的方法,其特征在于,所述方法步骤还包括:确保Activity被销毁。
5.根据权利要求3所述的方法,其特征在于,在用到Bitmap对象缓存图片的地方,把Bitmap对象声明为软引用。
6.根据权利要求4所述的方法,其特征在于,确保Activity被销毁的具体方法为:
A、需要引用Context的地方用Application替换;
B、销毁Activity时关闭子线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102548957A CN103309749A (zh) | 2013-06-25 | 2013-06-25 | 一种基于安卓***图片资源的内存释放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102548957A CN103309749A (zh) | 2013-06-25 | 2013-06-25 | 一种基于安卓***图片资源的内存释放方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103309749A true CN103309749A (zh) | 2013-09-18 |
Family
ID=49135006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102548957A Pending CN103309749A (zh) | 2013-06-25 | 2013-06-25 | 一种基于安卓***图片资源的内存释放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309749A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885753A (zh) * | 2014-03-03 | 2014-06-25 | 广州金山网络科技有限公司 | 缓存图片的管理方法、装置和客户端 |
CN104267996A (zh) * | 2014-09-29 | 2015-01-07 | 广州金山网络科技有限公司 | 一种图片资源处理方法、装置及终端 |
CN105373471A (zh) * | 2014-08-29 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 用于内存泄露漏洞的检测方法和装置 |
CN103793257B (zh) * | 2014-03-07 | 2016-08-24 | 中南大学 | 一种Android程序的流式执行方法 |
CN106598614A (zh) * | 2016-12-21 | 2017-04-26 | 北京奇虎科技有限公司 | 一种回收图片资源的方法及装置 |
CN106649130A (zh) * | 2016-12-28 | 2017-05-10 | 乐蜜科技有限公司 | 内存空间回收方法、装置和电子设备 |
CN107239394A (zh) * | 2016-03-29 | 2017-10-10 | 卓望数码技术(深圳)有限公司 | 一种安卓应用的内存泄露检测方法及装置 |
WO2018113725A1 (zh) * | 2016-12-21 | 2018-06-28 | 北京奇虎科技有限公司 | 加载图片资源的方法、装置、程序及介质 |
CN109117263A (zh) * | 2017-06-23 | 2019-01-01 | 中兴通讯股份有限公司 | 一种用户终端内存释放的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541605A (zh) * | 2011-12-30 | 2012-07-04 | Tcl集团股份有限公司 | 基于Android***的图片加载方法和装置 |
CN102819422A (zh) * | 2011-06-09 | 2012-12-12 | 腾讯科技(深圳)有限公司 | 通过控件加载远程图片的方法及*** |
US20130055199A1 (en) * | 2011-08-30 | 2013-02-28 | Evgeny Kryukov | Application platform for designing and executing applications |
-
2013
- 2013-06-25 CN CN2013102548957A patent/CN103309749A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819422A (zh) * | 2011-06-09 | 2012-12-12 | 腾讯科技(深圳)有限公司 | 通过控件加载远程图片的方法及*** |
US20130055199A1 (en) * | 2011-08-30 | 2013-02-28 | Evgeny Kryukov | Application platform for designing and executing applications |
CN102541605A (zh) * | 2011-12-30 | 2012-07-04 | Tcl集团股份有限公司 | 基于Android***的图片加载方法和装置 |
Non-Patent Citations (1)
Title |
---|
秦建平: "《Android编程宝典》", 31 March 2013, 北京航空航天大学出版社 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885753A (zh) * | 2014-03-03 | 2014-06-25 | 广州金山网络科技有限公司 | 缓存图片的管理方法、装置和客户端 |
CN103793257B (zh) * | 2014-03-07 | 2016-08-24 | 中南大学 | 一种Android程序的流式执行方法 |
CN105373471A (zh) * | 2014-08-29 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 用于内存泄露漏洞的检测方法和装置 |
CN105373471B (zh) * | 2014-08-29 | 2019-05-24 | 腾讯科技(深圳)有限公司 | 用于内存泄露漏洞的检测方法和装置 |
CN104267996A (zh) * | 2014-09-29 | 2015-01-07 | 广州金山网络科技有限公司 | 一种图片资源处理方法、装置及终端 |
CN107239394A (zh) * | 2016-03-29 | 2017-10-10 | 卓望数码技术(深圳)有限公司 | 一种安卓应用的内存泄露检测方法及装置 |
CN106598614A (zh) * | 2016-12-21 | 2017-04-26 | 北京奇虎科技有限公司 | 一种回收图片资源的方法及装置 |
WO2018113725A1 (zh) * | 2016-12-21 | 2018-06-28 | 北京奇虎科技有限公司 | 加载图片资源的方法、装置、程序及介质 |
CN106649130A (zh) * | 2016-12-28 | 2017-05-10 | 乐蜜科技有限公司 | 内存空间回收方法、装置和电子设备 |
CN109117263A (zh) * | 2017-06-23 | 2019-01-01 | 中兴通讯股份有限公司 | 一种用户终端内存释放的方法及装置 |
CN109117263B (zh) * | 2017-06-23 | 2023-08-15 | 中兴通讯股份有限公司 | 一种用户终端内存释放的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309749A (zh) | 一种基于安卓***图片资源的内存释放方法 | |
CN109947569B (zh) | 绑定核心的方法、装置、终端及存储介质 | |
US8468514B2 (en) | System and method for updating unified extensible firmware interface setting information | |
CN116501210B (zh) | 一种显示方法、电子设备及存储介质 | |
CN115631258B (zh) | 一种图像处理方法及电子设备 | |
CN106445617B (zh) | 基于Android的应用程序冷启动优化方法及*** | |
SG11201903476UA (en) | Method and apparatus for animating images on mobile devices | |
US9529463B1 (en) | Method and device for reducing latency for rendering and displaying stylus strokes | |
WO2023001163A1 (zh) | 一种可提升动效性能的屏幕刷新方法及设备 | |
KR20170125881A (ko) | 공유 셰이더 코어에서의 비동기 디스플레이 셰이더 기능 제공 | |
CN105450986B (zh) | 一种Linux下视频处理方法 | |
CN114153584A (zh) | 游戏帧循环的任务处理方法、设备及存储介质 | |
CN104376096A (zh) | 基于缓冲区的异步更新的方法 | |
CN104063837A (zh) | 一种图片显示处理方法、***及移动终端 | |
CN115509953A (zh) | 内存回收方法及其装置 | |
CN102486726A (zh) | 基于Qt的多线程绘图方法 | |
US10943372B2 (en) | GUI display method and apparatus, and terminal device | |
CN102629231A (zh) | 一种检测任务堆栈的方法 | |
WO2019001077A1 (zh) | 一种控制cpu线程和gpu线程同步的方法及装置 | |
CN116578422B (zh) | 资源分配方法和电子设备 | |
US20170329387A1 (en) | Terminal Setting Parameter Adjustment Method and Apparatus | |
US8773442B2 (en) | Aligning animation state update and frame composition | |
US9563931B2 (en) | Control method and information processing device | |
CN115934276A (zh) | 内存管理方法、装置及电子设备 | |
WO2023005751A1 (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130918 |
|
RJ01 | Rejection of invention patent application after publication |