原创 Java線程之synchronized關鍵字

synchronized的原理 在java中synchronized是用來給對象、方法、或者代碼塊加上同步鎖的,通過synchronized可以在多線程中實現對對象、方法、或者代碼塊的互斥訪問。 例如,現在有兩個線程A和線程B,

原创 HashMap源碼理解

HashMap介紹 HashMap是一個散列表,它是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說, 它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度 。這個映射函數叫做散列函數,存放記錄的數組

原创 RxJava學習之線程控制

RxJava線程控制 默認情況下被觀察者和觀察者是工作在同一個線程的, 我們可以通過一個Rxjava最基本的應用得到驗證: Observable<Integer> observable = Observable.create(n

原创 Android Bitmap理解

Bitmap介紹 Bitmap是Android系統中的圖像處理中最重要類之一。Bitmap可以獲取圖像文件信息,對圖像進行剪切、旋轉、縮放,壓縮等操作,並可以以指定格式保存圖像文件。 創建Bitmap 有兩種方法可以創建Bitma

原创 Java線程優先級

線程優先級介紹 關於線程的優先級先看一段Thread中源碼的註釋 Every thread has a priority. Threads with higher priority are executed in prefer

原创 Rxjava學習(一)

Android項目中引入Rxjava 在Android中使用RxJava2非常簡單, 只需要在Gradle配置: compile 'io.reactivex.rxjava2:rxjava:2.1.0' compile

原创 Android監聽通訊錄修改,然後上傳修改部分

需求 由於項目需要所以在app登錄之後都有獲取一份本地的通訊錄然後上傳到服務器。但是最近後臺的小夥伴一直反饋說如果每次前端都把整個的通訊錄上傳過去,然後後臺再做比較、去重、再插入數據庫的話這樣給服務器的壓力會比較大。仔細一想其實也

原创 自定義View的理解

View的繪製流程是從ViewRoot的performTraversals方法開始的。 MeasureSpace 代表一個32位的int值,高2位代表SpaceMode,低30位代表SpaceSize。 SpaceMode分三類:

原创 Android視頻加水印和壓縮

Android視頻加水印目前來說大致有3種方式可以實現: 利用Android原生Api MediaCodec OpenGL FFmpeg 這裏只是把自己在網上蒐集到的資料做個總結,和自己的修改記錄一下。 第一種利用Media

原创 Android之Fragment

一,Fragment的介紹 Fragment,俗稱碎片,自 Android 3.0 開始被引進並大量使用。之所以會引進它主要是爲了解決Android碎片化嚴重的問題。 你可以把Fragment當成Activity的一

原创 Android之Activity

Android之Activity Activity作爲Android四大組件之一可以說是最常見也是最重要的,它主要承擔着用戶於屏幕交互的職責, 對它的理解主要從以下幾個方面開始: Activity的使用 Activity的生命

原创 AIDL的基本使用

本篇主要是簡單的演示了AIDL的基本使用,最終實現的效果是當app運行時有兩個進程,從app進程發送數據到remoteapp進程,然後返回數據,在app進程展示。其實這就是一個跨進程的數據交互過程,下面介紹一下具體步驟。 新建工程

原创 Java傳值還是傳引用?

Java傳值還是傳引用? 先看下面的代碼: public class Demo { public static class Person{ String name; } //傳int類型

原创 Android以太坊錢包全部功能-基於web3j實現

文章目錄需要用到的工具GanacheMetamask錢包功能的具體實現引入依賴創建錢包第一種創建方式第二種創建方式keystore導入錢包助記詞導入錢包私鑰導入錢包Ganache環境鏈接infura第三方私鏈以太坊錢包轉賬監聽交易查詢

原创 ViewModel+LiveData

Android在前段時間正式發佈 Android 架構組件 1.0 穩定版,裏面包含Lifecycles,LiveData,ViewModel,Room。這裏主要記錄一下LiveData和ViewModel配合使用。 LiveData L