近日踩到一些Anndroid的坑
但是有些網路上的技術文好像沒提(或是我沒查到?)
歡迎交流指正~
但是有些網路上的技術文好像沒提(或是我沒查到?)
歡迎交流指正~
GPS
- LocationManager getBestProvider(Criteria criteria, boolean enabledOnly)
這個API沒辦法用 fake gps 去測!! - 紅米Android 6 就算關掉gps 他還是拿的到getLastKnownLocation的location,
一定要關掉應用程式的權限才真正的關掉
app背景數據記憶體暫存清除,再點icon喚醒app
- 平常都是從最外層的 application > activity > fragment onCreate,
但是重新喚醒後先create的是最內層的fragment >>> 最外層fragment > application > activity,
此時如果有甚麼東西從外層用fragment的建構子丟進來的東西,
不要懷疑fragment就是沒拿到外層的東西
取值請用getParentFragment
dialog開著旋轉螢幕crash
- 好吧這個我有查到XD值得注意的點是,為了避免dialog存全域的BUG,
最好封裝的時候,click回來的call back帶有dialog本身,好在點擊call back時控制dailog dismiss
http://stackoverflow.com/questions/32065854/activity-has-leaked-window-at-alertdialog-show-method
build gradle設定apk name帶有日期
- 直接在 AS run 他沒有更新 build gradle的資訊,
比如說,我 build 12.01.apk,隔天他會繼續run昨天的apk,但是改的code卻是產生了一個 12.02.apk,
很容易納悶為什麼我改的東西好像沒改到?! - 最好的方法是只設定release apk(signed)才帶有日期,
平常在run AS產生的apk就讓他的名字是default就好了,讓他一直覆蓋過去不要產生新的apk
因為現在找不到確切方法如何只讓signed apk 有日期的設定,
所以先愛用clean project 和 AS 右邊的gradle展開,左邊第一個按鈕 refresh gradle project (每日按XD|||)
recyclerview 長寬不能動態變換
- 不然他會一直重新產生scroll長度,導致會看到跳動畫面的情況,
我甚至還嘗試了recyclerview.layout()/recyclerview.setY() 效果超慘,
目前看到做複合的header recyclerview 都是把recyclerview 高度寫死撐滿螢幕,
但是會有fake的header view 給 recyclerview
或是外面再包一層scrollview 再依照適當時機分配touch event
請善用 https://github.com/SalomonBrys/ANR-WatchDog
- 寫了一年Android沒人告訴我可以用這個lib….
上網查ANR大多都是要你找手機產生的trace.txt檔,好像要root才看的到orz
不然就是模擬器,但是模擬器根本太慢,
官方也只會提醒你不要把耗時的寫在主線程 O_<
反正感謝這個lib加快了我debug的速度!!
Fragment蓋了兩層
- click會穿透,請把裝fragment的view xml設置為clickable=true
Handler不要放在thread裡面
- Exception只會叫你加個loop,但實際這樣寫會卡死
是時候該去唸多線程處理了XD
method只會傳值不會傳位址
- 如果把String傳進method改字,外面的String並不會跟著改變