某技術大牛的帖子(android項目總結)

1. 通常性控件須要設置onclick事件纔會有點擊效果(selector)。html

2.  <item android:drawable=」@drawable/btn_ct_green」 />要寫在selector的最後纔會有點擊效果。java

3. 製做.9格式圖片選最小圖,不然默認大小撐大控件。
4. 若是將一個對象的屬性設置爲static,那麼就算對象實例被回收了,該屬性也存在內存,生命週期爲app的生命週期。
5. OOM:普通視圖和listvew等大數據量展現視圖的圖片控制分開來。
6. OOM:listview等列表1秒真釋放,把大數據量加載後不用的圖片釋放。
7. OOM:大圖片使用前壓縮。
8. OOM:減小大圖。美工將所有規則圖最小化,製做.9格式,以最小程度佔用內存。
9. OOM:背景圖、大圖謹慎使用,不規則大圖顯式釋放。
10. 提早得知大小可以使用,view.measure(-1, -1);可是view必須得有父view。
11. listview列表呈現多種樣式,getViewTypeCount()方法返回所有樣式的總數,getItemViewType(int pos)返回的值必須小於getViewTypeCount(),不然報錯。

12. 公共類、接口、基類設計要職責清晰易理解,最大量減小別人使用時的難度。android

13. OOM:webview 內存溢出(OOM),重啓一個新進程。
而且設置:須要在onPause時中止Timer,解決因爲Timer在,致使WebCoreThread一直在,WebviewCache.db被鎖定, 圖文詳情沒法進入的問題webview.pauseTimers();
當Activity返回onResume時WebView.enablePlatformNotifications();webview .resumeTimers();
14. 觸控範圍要做爲一個規範來控制到開發的每一步中,有src屬性的能夠設置padding,沒有的爲了避免失真,套一個layout,最小寬度48dp(9mm)。
15. 請求帶有時間戳請注意,yy-MM-dd hh:mm:ss是12小時制格式。yy-MM-dd HH:mm:ss是24小時制格式。差異巨大。
16. 基礎數據類型的封裝類型是有預裝緩存的,JVM給Byte緩存了-128~127的對象,Integer緩存了-128~127。因此Integer i =k,Integer j =k,,k = 127,i == j爲true,k=128則爲false。
17. 邏輯條件加緊要慎重,放寬鬆更要慎重;放寬後考慮是否更引起反作用問題,聚划算將id=()、itemId=(),i()都抓下拉起詳情,結果頻繁無辜拉起。收緊後考慮是否會引發擴展問題
18.  最後一刻加上的代碼要嚴格的測試,不少時候就是最後‘覺得’加上了‘可有可無’的東西而致使崩潰掉。
19. Math.abs()取到的不必定是正數,Integer.minValue就是負值。
20. 多線程請使用併發容器放置變量,不輕易認爲機會少不會衝突,併發量一大什麼都有可能。ThreadPool.shutdownNow()以後只是清除等待隊列,而後等待活動線程執行完。
21. 強轉類型以前先先肯定對象不爲空。
22. android2.3如下版本listView.setDividerHeight()函數調用後,notifyDataSetChanged()便不能記住位置。可以使用setSelection記住位置。
23. finish和startActivity位置很重要. 由A跳轉向SingleTask的Activity B,A.finish的位置在startActivityB以前,退出B按home回到(home鍵退出或back鍵finishB)應用界面仍然是B,不管B是不是action.MAIN,overridePendingTransition須要在finish或者startActivity以後纔有效。
24. 區域事件攔截:好比只要ViewA獲取點擊事件而組織其父控件和其餘子控件觸發事件,可重寫activity的dispatchTouchEvent()函數,調用ViewA.getHitRect(rect),初始化一個Rect,判斷event的getX和getY若是在rec以內,攔截ACTION_DOWN返回true,其他ACTION調用ViewA. dispatchTouchEvent() 便可攔截事件。
25. 一次有效觸摸,當ACTION_DOWN返回ture時,其餘事件也不會在獲得響應。當event在rect以外時,能夠經過event.setAction(MotionEvent.ACTION_DOWN);activity.onTouchEvent(event);來從新觸發事件。
26. WebView:緩存與不緩存,很關鍵。尤爲在活動、計時、含session界面。
27. WebView:當webview佔用大量內存時,能夠將WebView所有啓動在另外一個進程中。
28. WebView:當多個重定向干擾或不能後退到上一頁時,不使用webview.goBack(),本身用棧Stack維護Url,其關鍵在於區分是不是重定向,目前採用java調用js獲取、分析網頁內容判斷是否重定向,若是不是再將url放入stack,反之不入棧。
29. 無線電波狀態機:應用運行在前臺考慮避免延遲阻塞,運行在後臺關注電量浪費。優化網絡鏈接:預取數據,批量傳輸與鏈接(包含攜帶、順帶其餘數據),減小鏈接次數(規避高頻心跳)。
30. 當listview含有Header時,在onItemClick事件中請這樣獲取ItemObject:Object obj = parent.getAdapter().getItem(position); 先判空,再強轉爲須要的對象。
31. WebView: 注意對下載文件的支持;shouldOverrideUrlLoading返回false,會自動加載該頁,返回true不會加載網頁,須要本身處理(以前返回true,調用WebView.load(url)結果形成重定向網頁不能回退的問題,本身花了很大代價才解決,直接返回false會自動加載)。
32. 使用一個函數,尤爲別人寫的函數,無論怎麼誠懇的承諾參數不會爲null,請儘可能作非空判斷。除以一個變量以前,先肯定其不爲0.
33. 若是程序自自動,或者後臺耗流量,首先檢測manifest中靜態註冊的廣播,它會拉起程序。
34. findbugs結合使用ADT(16之後)自帶的lint檢測程序中的問題,lint能夠檢測出未使用的圖片和更具android特性的問題。
35. View onMeasure以後,width不必定有值,若是設置了LayoutParagrams那麼view.getLayoutParams().width將有設定值。
36. Gallery特性改善:一次觸摸只切換一張圖片:複寫onFlying直接返回true;使觸摸更加靈敏:複寫onScroll 調用super.onScroll(e1, e2, distanceX * 1.5f, distanceY),使distanceX 變大就更加靈敏。
37. Gallery視覺優化:setStaticTransformationsEnabled(true)以後,getChildStaticTransformation方法生效,默認方法會使圖片alpha值改變變而視覺不清,複寫能夠利用Camera產生xyz和角度的改變,從而優化視覺體驗,好比打造3D畫廊。
38. 可共用的對象屬性用static來保持一份節省資源,每一個實例或者對象單獨享用的屬性切記不要static。
39. 改變一個類的私有屬性:
Field field = ViewGroup.class.getDeclaredField(「hsl」);
field.setAccessible(true); field.set(listView, 0);
40.  Which client is best?

Apache HTTP client has fewer bugs on Eclair and Froyo. It is the best choice for these releases.web

For Gingerbread and better, HttpURLConnection is the best choice. Its simple API and small size makes it great fit for Android. Transparent compression and response caching reduce network use, improve speed and save battery. New applications should use HttpURLConnection; it is where we will be spending our energy going forward.緩存

 

http://www.vmatianyu.cn/poly-effective-client-1-issues-lessons.html網絡

相關文章
相關標籤/搜索