原创 Android事件總線框架Otto源碼解析一(Bus的構造過程及在使用註解@Subscribe時的註冊過程)

 說明:本文的解析過程並不只是簡單的講解框架中各個方法的調用邏輯、程序的執行過程,而是依賴於示例代碼,結合了具體的的示例程序的執行流程,有助於更好的理解。 有關Otto的使用方法參見另一篇文章: Android事件總線框架Otto使用介紹

原创 策略模式的應用案例,以即時通信中,對不同類型的消息的構建處理業務爲例,結合簡單的緩存業務

       對於策略模式的概念,及優缺點,對於設計模式應用的應該都有所瞭解,這裏暫不贅述,本文主要從應用實戰的角度去處理。       少囉嗦,先上圖:        在目前的即時通信中,消息的類型多種多樣,對於不同的消息類型我們可能

原创 父佈局爲RelativeLayout,且固定高度,設置gravity="center_vertical"無效的問題

 首先看下佈局情況,一個RelativeLayout的父佈局裏有三個直接子元素,兩個RelativeLayout佈局和一個TextView控件; <RelativeLayout android:layout_

原创 GreenDao數據庫結合sqlcipher時的運行時異常:java.lang.UnsatisfiedLinkError …couldn't find "libsqlcipher.so"

GreenDao數據庫結合sqlcipher時的運行時異常大致的異常信息如下:  java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList

原创 com.android.build.api.transform.TransformException: java.util.zip.ZipException: zip file is empty異常

報錯信息: Cause: zip file is empty org.gradle.execution.MultipleBuildFailures: Build completed with 1 failures. at org.gr

原创 組件化的簡單實現,各module可獨立編譯

首先可以先學習通過gradle的配置,去實現各個Module的可獨編譯,具體項目中各個Module的業務拆分和依賴問題,及基礎庫和公衆業務層的處理,還需要更多的業務實踐; 可以在項目的gradle.properties進行開關配置,也可以

原创 Android實現輸出到Logcat的Log日誌,能夠定位到代碼行數,可跳轉至對應的代碼行,並且可以設置日誌緩存

      實現輸出到Logcat的Log日誌,能夠定位到代碼行數,可跳轉至對應的代碼行,並且可以設置日誌緩存;       比較簡單的實現方式,少囉嗦了: package com.icbc.utils; import android

原创 GreenDao數據庫多線程讀寫操作驗證

 本文只是對GreenDao數據庫多線程讀寫操作的驗證: package com.windfallsheng.mygreendao; import androidx.appcompat.app.AppCompatActivity; i

原创 Android中瀏覽器或者應用通過scheme喚起目標應用,打開目標頁面的實現,及多次喚起時目標應用的攔截頁面未執行問題

 本文模擬的是appA喚起appB,打開指定的BActivity頁面的情況,兩個應用的頁面結構如下圖所示: 瀏覽器或者其它應用,通過scheme配置喚起目標應用,需要約定的uri,如示例代碼中的 String uri = "appb:

原创 項目的網絡請求開發中retrofit2和okhttp3的結合使用示例

本文是retrofit2和okhttp3的結合使用的簡單示例,邏輯不復雜,示例代碼中使用的框架版本是okhttp:4.4.0和retrofit:2.7.2,下文將貼出所有代碼: 項目結構: AndroidManifest的配置:  <

原创 RxJava簡介

ReactiveX ReactiveX是一個庫,用於使用可觀察序列(observable sequence)組合異步和基於事件(event-based)的程序。 它擴展了觀察者模式(observer pattern),以支持數據和/或事件

原创 EventBus之Subscriber Index

Subscriber Index 訂閱者索引是EventBus 3的一個新特性。這是一個可選的優化,以加快初始訂閱者註冊。 Subscriber Index在編譯時(build time)使用EventBus註解處理器(annotatio

原创 EventBus之AsyncExecutor

AsyncExecutor AsyncExecutor類似於線程池,但具有失敗(異常)處理。失敗是拋出異常,AsyncExecutor將把這些異常封裝在一個事件中,該事件將自動發佈。 免責聲明:AsyncExecutor是一個非核心實用程

原创 EventBus之優先級和事件取消

優先級和事件取消(Priorities and Event Cancellation) 雖然EventBus的大多數用例不需要優先級或事件取消,但在某些特殊情況下,它們可能會派上用場。例如,如果應用程序在前臺,事件可能會觸發一些UI邏輯,

原创 EventBus之粘性事件(Sticky Events)

Sticky Events 有些事件在事件發佈後攜帶有感興趣的信息。例如,一個事件表示某個初始化已經完成。或者如果你有一些傳感器或位置數據,你想要保持最近的值。您可以使用粘性事件,而不是實現自己的緩存。因此EventBus將某個類型的最後