您好,登錄后才能下訂單哦!
內存優化:
(1) NDK 和 JNI
(2)對于圖片處理使用openGL的texture;
2.bitmap優化:
在生成bitmap時根據bitmap的大小判斷是否進行縮放,縮放代碼:
BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; BitmapFactory.decodeFile(path,opts) //獲取寬高 int width = opts.outWidth; int height = opts.outHeight; //重新獲取bitmap對象前要將: opts.inJustDecodeBounds = false;
3.代碼的優化:
(1)靜態變量太多會引起內存泄露;
(2)使用Application context:如果想保持一個長期生命的對象時需要一個context對象,則調用getApplicationContext()使用Application context;
(3)及時關閉資源,eg:cursor;
(4)使用Bitmap后及時調用recyle()方法回收bitmap對象;
(5)對Adapter優化,使用Holder;
(6)代碼的微優化:
盡量減少創建新對象;
將類、方法、變量的可見性設為最低;
針對字符串的拼接使用StringBuffer代替String;
不要在循環中申明臨時變量,不要在循環中捕獲異常;
如果對于線程安全沒有要求,盡量使用線程不安全的集合對象;
使用集合對象如果事先知道其大小,則可以在構造方法中設置初始大小;
文件讀取操作,需要使用緩存類及時關閉文件;
慎用異常,使用異常會導致性能降低;
如果程序頻繁創建線程,則可以考慮使用線程池;
4.Android UI優化:
(1)盡量使用系統資源;
(2)使用系統的Style要在使用的資源面前在“?android”,而不是@android////
(3)查看系統資源:進入android-sdk\platforms\android-8\data\res;
(4)抽取相同的布局;
(5)精簡UI層次:
merge標簽的使用,所有Activity的根節點都是FrameLayout,如果所創建Layout是FrameLayout則使用merge標簽作為根節點,其他布局則不可用;
使用merge標簽的兩個限制:
merge只能作為xml布局的根標簽;
當inflater以merge為開頭的布局文件時,必須指定一個父ViewGroup并且必須設置attachToRoot為true;
(6)界面延遲加載技術:
ViewStub是一個隱藏的不占用內存文件的視圖對象,可以運行時延時健在布局資源文件。當ViewSub被設置為可見或者調用inflate()方法時才會真的區加載這個布局資源文件;
(7)crash的處理:應用超時無響應;
Thread.setDefaultUnCaughtExceptionHandler(Thread.unCaughtExceptionHandler)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。