日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

andoid x项目的优化 1

發(fā)布時(shí)間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 andoid x项目的优化 1 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

通常我們寫程序,都是在項(xiàng)目計(jì)劃的壓力下完成的,此時(shí)完成的代碼可以完成具體業(yè)務(wù)邏輯,但是性能不一定是最優(yōu)化的,一般來(lái)說(shuō),一般來(lái)說(shuō),優(yōu)秀的程序員在寫完代碼之后都會(huì)不斷的對(duì)代碼進(jìn)行重構(gòu)。重構(gòu)的好處有很多,其中一點(diǎn),就是對(duì)代碼進(jìn)行優(yōu)化,提高軟件的性能。下面我們就從幾個(gè)方面來(lái)了解Android開(kāi)發(fā)過(guò)程中的代碼優(yōu)化。


?

1)靜態(tài)變量引起內(nèi)存泄露

在代碼優(yōu)化的過(guò)程中,我們需要對(duì)代碼中的靜態(tài)變量特別留意。靜態(tài)變量是類相關(guān)的變量,它的生命周期是從這個(gè)類被聲明,到這個(gè)類徹底被垃圾回收器回收才會(huì)被銷毀。所以,一般情況下,靜態(tài)變量從所在的類被使用開(kāi)始就要一直占用著內(nèi)存空間,直到程序退出。如果不注意,靜態(tài)變量引用了占用大量?jī)?nèi)存的資源,造成垃圾回收器無(wú)法對(duì)內(nèi)存進(jìn)行回收,就可能造成內(nèi)存的浪費(fèi)。

?

2:使用Application 的Context

? ? ?在android 中 ,Application Context 的生命周期一樣長(zhǎng),而不是取決于某個(gè)Activty 的生命周期,如果想保持一個(gè)長(zhǎng)期生命的對(duì)象,并且這個(gè)對(duì)象

在這里將this.getResources()修改為this.getApplication().getResources()。修改以后,Resources對(duì)象擁有的是Application對(duì)象的引用。如果Activity被重新創(chuàng)建,第一次創(chuàng)建的Activity就可以被回收了。


3)及時(shí)關(guān)閉資源

Cursor是Android查詢數(shù)據(jù)后得到的一個(gè)管理數(shù)據(jù)集合的類。正常情況下,如果我們沒(méi)有關(guān)閉它,系統(tǒng)會(huì)在回收它時(shí)進(jìn)行關(guān)閉,但是這樣的效率特別低。如果查詢得到的數(shù)據(jù)量較小時(shí)還好,如果Cursor的數(shù)據(jù)量非常大,特別是如果里面有Blob信息時(shí),就可能出現(xiàn)內(nèi)存問(wèn)題。所以一定要及時(shí)關(guān)閉Cursor。


?

即對(duì)異常進(jìn)行捕獲,并且在finally中將cursor關(guān)閉。

同樣的,在使用文件的時(shí)候,也要及時(shí)關(guān)閉。

?

?

4)使用Bitmap及時(shí)調(diào)用recycle()

前面的章節(jié)講過(guò),在不使用Bitmap對(duì)象時(shí),需要調(diào)用recycle()釋放內(nèi)存,然后將它設(shè)置為null。雖然調(diào)用recycle()并不能保證立即釋放占用的內(nèi)存,但是可以加速Bitmap的內(nèi)存的釋放。

在代碼優(yōu)化的過(guò)程中,如果發(fā)現(xiàn)某個(gè)Activity用到了Bitmap對(duì)象,卻沒(méi)有顯式的調(diào)用recycle()釋放內(nèi)存,則需要分析代碼邏輯,增加相關(guān)代碼,在不再使用Bitmap以后調(diào)用recycle()釋放內(nèi)存

?


?

當(dāng)向上滾動(dòng)ListView時(shí),getView()方法會(huì)被反復(fù)調(diào)用。getView()的第二個(gè)參數(shù)convertView是被緩存起來(lái)的List條目中的View對(duì)象。當(dāng)ListView滑動(dòng)的時(shí)候,getView可能會(huì)直接返回舊的convertView。這里使用了convertView和ViewHolder,可以充分利用緩存,避免反復(fù)創(chuàng)建View對(duì)象和TextView對(duì)象。

如果ListView的條目只有幾個(gè),這種技巧并不能帶來(lái)多少性能的提升。但是如果條目有幾百甚至幾千個(gè),使用這種技巧只會(huì)創(chuàng)建幾個(gè)convertView和ViewHolder(取決于當(dāng)前界面能夠顯示的條目數(shù)),性能的差別就非常非常大了

?







?

轉(zhuǎn)載于:https://www.cnblogs.com/jiangu66/p/3192204.html

總結(jié)

以上是生活随笔為你收集整理的andoid x项目的优化 1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。