原创 Too many alarms (500) registered

公司項目開發時,同事見解總結。BUG基本都是在三星機器上出現。 1.PendingIntent.getBroadcast的第4個參數flags,建議用PendingIntent.FLAG_UPDATE_CURRENT,因爲FLAG

原创 數據結構——聊聊Java/Android的Mutable

閒來無事,翻了翻android.jar包的代碼,看能不能吸取下Google工程師的精髓。 在android.util包下,看到了MutableInt、MutableDouble…這幾個類。 搜了搜,Java自己的包裏面也有一套Muta

原创 android annotations

@CallSuper 必須調用父類的此方法,即super.xxx() 例如你寫一些公共超類,例如BaseActivity時,你希望子類必須調用BaseActivity.onCreate()方法(例如你要在此做一些統計),你可以在B

原创 架構--探索Architecture Component之TaskExecutor

萬丈架構平地起,帶你拆解Google Android Architecture Component(以下簡稱 Arch)系列之一。 此次解析比較簡約且獨立的部分,android.arch.core.executor包。讓我們來學習下

原创 Android O(8.0)創建桌面快捷方式

Android O正式版發佈在即,公司的應用也開始適配Android O,測試發現,Android O原生桌面上,按照傳統創建快捷方式的形式,是不會產生快捷方式的。 PS:以下示例的源碼請參閱:https://github.com/Opt

原创 Android Matrix

Android中使用Matrix中心縮放時,經常看到這段代碼. matrix.setScale(interpolatedTime, interpolatedTime); matrix.preTranslate(-centerX, -cen

原创 Android雪花下落效果

必須先上圖: 圖片看不到可以上GitHub看Demo:https://github.com/OptimusPrimeRen/SnowflakesView 再上代碼: (註釋還算多,不算太難,就不詳述過程了) public class

原创 Android關於Activity屏蔽/攔截Home鍵

寫在前面: 這篇文章並沒有提供屏蔽Home鍵的方法,僅僅是闡釋一些原理,引發一些思考。 1.奇淫技巧的源泉:PhoneWindowManager#interceptKeyBeforeDispatching 攔截home鍵的思想大致由

原创 關於Android的layout_weight

先說總結:系統總是先按layout_width(或layout_height)分配長度,然後將佈局中的剩餘長度按layout_weight的比例分配。 不理解沒關係,看示例: 1.一般我們設置layout_weight時都要設置layo

原创 Java之禪——軟/弱引用踩坑記

看到這篇文章,想必已經弱應用/軟引用有一定了解了。且平時也會用它來幹些什麼,比如防止內存泄露等。 下面請先閱讀一段manager代碼: /** * 生命週期很長的一個類,例如管理類這種單例 */ public class LongL

原创 Android屬性動畫優化(更高效的使用屬性動畫)

屬性動畫的基礎知識可以上郭霖的blog補下。地址:http://blog.csdn.net/guolin_blog/article/details/43536355 以下是自己另附的一些優化策略。 1.使用PropertyValues

原创 Android O(8.0)通知欄適配

從一個bug說起,前陣子拿Nexus 6P(Android 8.0)進行通知推送的測試,發現無法彈出通知欄。 項目跑在Android 8.0模擬器上彈出了Toast: Developer warning for package “xxx

原创 Android徹底去Log,反編譯都看不到

出發點: 當然是由於編程習慣太好,打了一堆中文log,其實只是想給測試看。然而如果包被反編譯,看log基本都能理解流程了,有點尷尬。所以此文主要探究proguard配置,以去除log。 以下過程示例,來自於這段代碼。 public c

原创 Android APK瘦身/減小包體

隨着應用的長久迭代,各種功能模塊的加入,APK包體越來越大,減小包體是必要的。 所以,從最簡單的來。 1.刪除無用資源 應用迭代就了,功能增刪,總會有無用資源殘留,所以,定期刪除無用資源是必要的。(尤其是圖片那些)

原创 Android源代碼下載、編譯、運行

注:此文內所用代碼工具等一般都採自官網,所以請先有能翻牆的環境,並且是Ubuntu系統(最好64位)。 我所採用的環境:Ubuntu 14.04 64位、8G RAM、Intel core i3雙核四線程,硬盤剩餘100G以上。 官方