原创 TBS服務

用Android自帶的WebView組件,做過一些較複雜應用的人應該都會發現,這個自帶的組件很多時候真是讓人無力吐嘈,主要理由有二: Android中的WebView組件,內存泄漏的問題一直沒有非常有效的解決方案,讓程序猿們痛不欲生。A

原创 Android視頻框架 Vitamio 打造自己的萬能播放器

Vitamio 是一款 Android 與 iOS 平臺上的全能多媒體開發框架,全面支持硬件解碼與 GPU 渲染。 Vitamio 功能強大,能夠流暢播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常見格

原创 RxBus的實現及簡單使用

RxJava目前已經很火了,如果你尚未了解請看這裏。對於RxJava這裏不多做介紹。 RxBus並不是一個庫,而是一種模式。相信大多數開發者都使用過EventBus,作爲事件總線通信庫,如果你的項目已經加入RxJava和EventBus

原创 OkHttp使用總結

1. 歷史上Http請求庫優缺點 在講述OkHttp之前, 我們看下沒有OkHttp的時代, 我們是如何完成http請求的. 在沒有OkHttp的日子, 我們使用HttpURLConnection或者HttpClient.

原创 Launcher3 壁紙流程分析

Launcher3 壁紙分析 Launcher3 壁紙分析 WallpaperPickerActivity結構 1 父類WallpaperCropActivity2 佈局文件wallpaper_pickerxml初始化流程 1

原创 理解23種設計模式

面向對象的六大原則 首先,我們爲什麼要學習設計模式。主要是這些模式是前人總結的經驗,使用這些模式能讓我們的程序更健壯、更穩定、容易擴展等等優點。在編寫面向對象程序時,我們需要遵循以下6個原則,能讓我們的程序維護起來更輕鬆~(當然還

原创 AOSP mk文件總結

1 Build Layers Build Layers描述的是產品的硬件配置情況,據此make時選擇不同的配置和模塊。按照從上到下的順序,Build Layer分成4層。 Layer sample Note Arch

原创 Mk文件語法規則

Makefile 語法分析 第一部分 VERSION = 2 給變量VERSION賦值 PATCHLEVEL = 6 給變量PATCHLEVEL賦值 SUBLEVEL = 22 給變量SUBLEVEL賦值 EXTRAVE

原创 自定義View

1.自定義View 首先我們要明白,爲什麼要自定義View?主要是Android系統內置的View無法實現我們的需求,我們需要針對我們的業務需求定製我們想要的View。自定義View我們大部分時候只需重寫兩個函數:onMeasure(

原创 Win10 配置Python開發環境

Win10 Python開發環境配置 本文介紹在win10下 搭建Pycharm+Anaconda快速搭建Python開發環境 下載Phcharm Pycharm 可以在jetbrain官網找到 下載地址 http://www.jet

原创 RxJava解決發射事件速度和消費事件速度不一致導致rx.exceptions.MissingBackpressureException

Backpressure Rx 中的數據流是從一個地方發射到另外一個地方。每個地方處理數據的速度是不一樣的。如果生產者發射數據的速度比消費者處理的快會出現什麼情況?在同步操作中,這不是個問題,例如: // Produce Obser

原创 安卓官方編碼規範

Java 語言規則 Android 遵循標準 Java 編碼規範以及下文所述的其他規則。 請勿忽略異常 開發者可能會傾向於編寫完全忽略異常的代碼,例如: void setServerPort(String value) {

原创 解決OKHttp3 報OKHTTP javax.net.ssl.SSLHandshakeException錯誤

一、概述 其實這篇文章理論上不限於okhttp去訪問自簽名的網站,不過接上篇博文了,就叫這個了。首先要了解的事,okhttp默認情況下是支持https協議的網站的,比如https://www.baidu.com,https://git

原创 view、viewgroup 事件響應攔截處理機制

一、View,ViewGroup(下面紅名的組件必須熟練)  作過Android 應用開發的朋友都知道,Android的UI界面都是由View和ViewGroup及其派生類組合而成的。其中,View是所有UI組件的基類,而ViewGr

原创 深入Android MediaPlayer的使用方法詳解

1)如何獲得MediaPlayer實例: 可以使用直接new的方式: MediaPlayer mp = new MediaPlayer(); 也可以使用create的方式,如: MediaPlayer mp = MediaPlaye