android如何提升性能技巧(下)

      網(wǎng)友投稿 734 2022-05-28

      1.什么是TraceView?

      先看下百度出來的解釋吧:

      // start tracing to "/sdcard/yourActivityTrace.trace"

      Debug.startMethodTracing("yourActivityTrace");

      // ... stop tracing

      Debug.stopMethodTracing();

      之后就可以看到圖形了,接下來就是按照Google Dev Guide中的解釋去分析圖形就OK了。

      下面來看如何實(shí)現(xiàn)以及需要注意的地方:

      實(shí)現(xiàn)的步驟分為三步:1.必須先在我們的模擬器中創(chuàng)建sdCard ;2.將我們的調(diào)試代碼嵌入工程;3.利用TraceView來觀察和分析代碼情況;

      1.對于創(chuàng)建模擬器的sdCard這里寫出兩種方式:

      2.將我們的調(diào)試代碼嵌入工程

      1

      2 Android="http://schemas.android.com/apk/res/android"

      3 package="com.himi"

      4 android:versionCode="1"

      5 android:versionName="1.0">

      6

      7

      8 android:label="@string/app_name">

      9

      10

      11

      12

      13

      14

      15

      16

      17

      3.運(yùn)行項(xiàng)目并且退出項(xiàng)目從而得到的追蹤文件,利用TraceView來進(jìn)行分析代碼運(yùn)行狀況:

      18

      22 public void hot(Canvas canvas) {

      23 for (int i = 1; i < 100; i++) {

      24 Bitmap bmp = BitmapFactory.decodeResource(getResources(),

      25 R.drawable.icon);

      26 canvas.drawBitmap(bmp, i += 2, i += 2, paint);

      27 }

      28 }

      2.listview 性能優(yōu)化

      1).復(fù)用convertView

      2).異步加載圖片

      3).快速滑動時不顯示圖片

      4).BaseAdapter避免內(nèi)存溢出

      如果BaseAdapter的實(shí)體類有屬性非常消耗內(nèi)存,可以將保存到文件;為提高性能,可以進(jìn)行緩存,并限制緩存大小。

      3.使用線程池

      分為核心線程池和普通線程池,下載圖片等耗時任務(wù)放置在普通線程池,避免耗時任務(wù)阻塞線程池后,導(dǎo)致所有異步任務(wù)都必須等待

      4.異步任務(wù)

      分為核心任務(wù)和普通任務(wù),只有核心任務(wù)中出現(xiàn)的系統(tǒng)級錯誤才會報錯,異步任務(wù)的ui操作需要判斷原activity是否處于激活狀態(tài)

      5.盡量避免static成員變量引用資源耗費(fèi)過多的實(shí)例,比如Context

      6.使用WeakReference代替強(qiáng)引用

      android如何提升性能技巧(下)

      弱引用可以讓您保持對對象的引用,同時允許GC在必要時釋放對象,回收內(nèi)存。對于那些創(chuàng)建便宜但耗費(fèi)大量內(nèi)存的對象,即希望保持該對象,又要在應(yīng)用程序需要時使用,同時希望GC必要時回收時,可以考慮使用弱引用。

      7.超級大胖子Bitmap

      8.保證Cursor 占用的內(nèi)存被及時的釋放掉,而不是等待GC來處理。

      并且 Android明顯是傾向于編程者手動的將Cursor close掉

      9.線程也是造成內(nèi)存泄露的一個重要的源頭。

      線程產(chǎn)生內(nèi)存泄露的主要原因在于線程 生命周期的不可控

      10.如果ImageView的圖片是來自網(wǎng)絡(luò)

      進(jìn)行異步加載

      11.應(yīng)用開發(fā)中自定義View

      應(yīng)用開發(fā)中自定義View的時候,交互部分,千萬不要寫成線程不斷刷新界面顯示,而是根據(jù)TouchListener事件主動觸發(fā)界面的更新

      12.Drawable

      13.復(fù)用、回收Activity對象

      臨時的activity及時finish主界面設(shè)置為singleTask一般界面設(shè)置為singleTop

      14.獲取地理位置信息

      位置信息獲取用戶的地理位置信息時,在需要獲取數(shù)據(jù)的時候打開GPS,之后及時關(guān)閉掉

      15.電源管理

      在onResume時設(shè)置該界面的電源管理,在onPause時取消設(shè)置

      16.android內(nèi)存優(yōu)化

      android因其系統(tǒng)的特殊性,安裝的軟件默認(rèn)都安裝到內(nèi)存中,所以隨著用戶安裝的軟件越來越多,可供運(yùn)行的程序使用的內(nèi)存越來越小,這就要求我們在開發(fā)android程序時,盡可能的少占用內(nèi)存。根據(jù)我個人的開發(fā)經(jīng)驗(yàn)總結(jié)了如下幾點(diǎn)優(yōu)化內(nèi)存的方法:

      創(chuàng)建或其他方式獲得的對象如不再使用,則主動將其置為null。

      盡量在程序中少使用對圖片的放大或縮小或翻轉(zhuǎn).在對圖片進(jìn)行操作時占用的內(nèi)存可能比圖片本身要大一些。

      盡可能的將一些靜態(tài)的對象(尤其是集合對象),放于SQLite數(shù)據(jù)庫中。并且對這些數(shù)據(jù)的搜索匹配盡可能使用sql語句進(jìn)行。

      一些連接資源在不使用使應(yīng)該釋放,如數(shù)據(jù)庫連接文件輸入輸出流等。應(yīng)該避免在特殊的情況下不釋放(如異?;蚱渌闆r)

      一些長周期的對像引用了短周期的對象,但是這些短周期的對象可能只在很小的范圍內(nèi)使用。所以在查內(nèi)存中也應(yīng)該清除這一隱患。

      一個對象被多個對象引用,但是只釋放了一處,也可能會導(dǎo)致這個對像不會被釋放。

      Android

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:C語言小游戲:掃雷實(shí)現(xiàn)
      下一篇:C語言 | 輸入一個數(shù)輸出對應(yīng)的值
      相關(guān)文章
      欧洲亚洲国产清在高| 亚洲国产综合精品中文字幕| 相泽亚洲一区中文字幕| 国产成人亚洲精品91专区高清| 在线a亚洲老鸭窝天堂av高清| 亚洲国产成人久久| 亚洲欧洲中文日产| 亚洲国产人成在线观看| 亚洲va精品中文字幕| 亚洲精品国产精品国自产网站 | 亚洲蜜芽在线精品一区| 西西人体44rt高清亚洲| 久久久久亚洲Av片无码v| 久久91亚洲精品中文字幕| 久久亚洲免费视频| 日韩精品一区二区亚洲AV观看| 亚洲国产精品自在线一区二区| 亚洲国产精品婷婷久久| 亚洲第一页在线播放| 亚洲av日韩av无码av| 亚洲日韩亚洲另类激情文学| 亚洲国产一成久久精品国产成人综合 | 亚洲国产视频一区| 亚洲va成无码人在线观看| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲日本成本人观看| 亚洲av永久无码精品秋霞电影秋| 久久精品国产亚洲AV未满十八| 亚洲AV无码乱码在线观看牲色| 2017亚洲男人天堂一| 亚洲一线产品二线产品| 亚洲爆乳无码精品AAA片蜜桃| 亚洲av中文无码| 亚洲色大成网站WWW久久九九| 久久精品国产亚洲麻豆| 亚洲小视频在线观看| 亚洲冬月枫中文字幕在线看| 成人区精品一区二区不卡亚洲| 国产亚洲精品AAAA片APP| 国产成人精品曰本亚洲79ren| 亚洲国产精品乱码一区二区|