原创 APP啓動方式分析——冷啓動、熱啓動、溫啓動

APP啓動分析 Cold start At the beginning of a cold start, the system has three tasks. These tasks are: 1、Loading and la

原创 使用Material Design實現沉浸式狀態欄+懸浮+漸變效果實現

前言 近期發現市面上很多App都採用了沉浸式狀態欄效果,近期抽時間使用Material Design控件實現了一個,故記錄分享 代碼實現 1、添加Material Design依賴 implementation 'com.and

原创 使用RecyclerView自定義實現二級聯動列表

一、需求分析 單各list列表實現很簡單直接使用RecyclerView填充列表即可,那麼多級列表該怎樣實現呢,同樣很簡單,只需監聽第一級列表的item點擊事件再填充第二級列表即可實現。 二、代碼實現 1、創建佈局文件 由兩個Re

原创 IPC之Messenger傳遞數據

一、基本使用 使用Messenger通信是基於binder途徑進行傳遞數據,和AIDL類似,都是通過客戶端綁定服務的形式實現數據傳遞 步驟如下: 1、在 manifest中註冊服務,作爲遠程服務 <service android:

原创 IntetntService基本使用及源碼解析

一、簡介 IntentService is a base class for {@link Service}s that handle asynchronous * requests (expressed as {@li

原创 Message、MessageQueue源碼流程梳理

上一篇把Handler和Looper源碼流程進行了梳理,這一篇繼續handler相關源碼梳理 仍舊是Xmind思維導圖 Message MessageQueue

原创 電商項目之環信在線客服接入

一、緣起 電商項目開發中在線客服屬於常見需求,可以通過環信開發文檔按照步驟接入,由於很多同學在開發過程中經常遇到問題,而且環信提供的Demo無法正常運行,所以寫下這篇文章用於解惑。 二、材料準備 1、在環信客服後臺創建客服雲賬號

原创 抽絲撥繭——EventBus源碼解析

一、 EventBus 註冊 1、EventBus.getDefault() 通過DoubleCheck創建EventBus實例 public static EventBus getDefault() { if

原创 ARouter入門之從零開始——Kotlin版

緣起 隨着app項目的逐步迭代開發,單獨運行調試比較耗時,實行項目組件化拆分迫在眉睫,而跨組件通信是必須要解決的問題,而ARouter算是一個比較成熟的路由解決方案,所以寫下此篇文章,藉此來記錄。 一 、添加gradle基礎配置

原创 addView引發的崩潰問題及思考分析

開發過程中經常會通過addView()方法動態添加子控件,如果不注意的話會出現異常: Caused by: java.lang.IllegalStateException: The specified child already

原创 Mac版AndroidStudio快捷鍵,提升你的開發效率!

AndroidStudio Mac快捷鍵 (Mac OS 10.5+) 由於最近更換mac電腦開發android,特總結一篇關於AndroidStudio的快捷鍵文章,提高開發效率,用於備忘分享 常規操作 功能描述 快捷鍵

原创 策略設計模式

一、策略設計模式定義策略設計模式是指對一系列算法的定義,並將每一個算法封裝起來,而且使他們還可以相互替換。策略設計模式讓算法獨立於他的客戶而獨立變化。二、使用情況1、 多個類只區別在表現行爲不同,可以使用Strategy模式,在運行時動態

原创 android實現app國際化

隨着公司發展,要進行app國際化,順便弄個小Demo,分享給大家 經過調研,目前實現國際化的方式有兩種: 1、一種是安卓系統自己根據手機選擇的語言加載values文件夾下相對應strings文件 2、一種是通過手動設置實現 下面

原创 自定義橫向跑馬燈文字效果

自定義跑馬燈效果,並添加根據屏幕密度自動調整字體大小,詳見註釋 1、自定義控件 package net.edaibu.testapplication.view; import android.content.Context; impo

原创 混淆後APK百度地圖不能正常使用問題分析

近日代碼混淆後地圖突然間不能正常使用,經過測試分析發現問題,總結如下: 1、百度地圖註冊AK時使用的是debug.keystore簽名文件生成的SHA1值與release包使用的簽名文件不同,導致SHA1值不同導致 此時需要重新使用rel