原创 Effective java 讀書筆記( 三 )

23.請不要在新代碼中使用原生態類型 1.原生態類型與java1.5版本之前未引入泛型時一樣,有很多問題,不推薦使用 2.不使用原生態類型,但又不關心實際的類型參數的時候該怎麼辦呢?java提供了一種安全的替代方法,稱作“無限制的通配符類

原创 Effective java 讀書筆記( 二 )

9.覆蓋equals時總要覆蓋hashCode 1.在應用程序的執行期間,只要對象的equals方法的比較操作所用到的信息沒有被修改,那麼對這同一個對象調用多次,hashCode方法都必須始終如一地返回同一個整數。在同一個應用程序的多次執

原创 Effective java 讀書筆記( 五 )

38.檢查參數的有效性 39.必要時進行保護性拷貝 1.對於構造器的每個可變參數進行保護性拷貝(defensive copy)是必要的,並且使用備份對象作爲被拷貝對象實例的組件,而不是使用原始的對象40.謹慎設計方法原型 1.謹慎地選

原创 Avoid Finalizers

Finalizers are unpredictable, often dangerous, and generally unnecessary. Their use can cause erratic behavior, poor p

原创 ViewGroup的測量模式

ViewGroup的測量模式  /** * Does the hard part of measureChildren: figuring out the MeasureSpec to * pass to a

原创 工作中經常遇到的代碼錯誤

歷史原因,項目中既有com.alibaba.fastjson.JSONObject又有org.json.JSONObject。把com.alibaba.fastjson.JSONObject強制轉換成org.json.JSONObject

原创 Android Seekbar高低版本兼容問題之拖拽按鈕位置異常問題排查

目錄 問題描述 原因分析 Android 6.x -10.x  updateThumbAndTrackPos Android 5.1 (API 22) updateThumbAndTrackPos Android 4.1 (API 15)

原创 接入廠商push通道遇到的坑

魅族廠商通道   詳見問題鏈接 https://developer.umeng.com/docs/66632/detail/67140?um_channel=sdk 

原创 Android View中getTop,getY,getTranslationY之間的關係

首先View源碼中沒有Y這個成員變量。 View源碼中的成員變量只有 mTop和mTransformationInfo(和translationY有關)。 Y只是作爲一個抽象概念存在,它的計算關係如以下代碼所示。 /** *

原创 Google IO 2017 加快gradle編譯速度

關於顯著加快gradle打包速度的7點建議,僅用於開發階段打包配置,正式發佈時打包配置有些建議不適用。 1. 使用最新的gradle插件 使用最新的gradle插件 2. 避免在老版本系統上使用multidex 避免

原创 加快gradle編譯速度

Screenshot_20170523-234450.png Screenshot_20170523-234650.png Screenshot_20170523-234816.png ![ S

原创 XML中使得EditText不能自動獲取焦點

Activity中放置了多個的EditText的時候(比如Recyclerview 的item中有edittext),進入該activity的時候第一個EditText會接收焦點,但是項目中需要所有的EditText默認是不接收焦點的,該

原创 記錄使用Instant Run的一個坑

前段時間讀了一片文章Instant Run工作原理及用法,文章寫的不錯,我很受啓發。引用其中一段 如果應用的minSdkVersion小於21,可能多數的Instant Run功能會掛掉,這裏提供一個解決方法,通過product fla

原创 遇到的那些手機兼容問題

記錄下使用不同廠商的手機時遇到的各種奇怪問題。 VIVO手機 我用的是VIVO X21A,Android 8.1.0系統,遇到的奇怪問題如下: 開發者模式打開之後,無法連接adb命令,導致無法連接Android Studio。反覆開關de

原创 排查狀態欄沉浸式引起的佈局間距過大的bug

記錄一次在工作中遇到的排查狀態欄沉浸式引起的佈局間距過大的bug的過程。   我要在一個全屏的頁面上(FrameLayout)懸浮一個置頂(Gravity.Top)的菜單欄(MenuBar)。 菜單欄初始狀態是隱藏的,用一個transla