原创 android中利用opencv進行圖像識別

之前開發的時候老大讓研究下圖像識別的功能,同事推薦看看opencv,發現對於移動端來說opencv的資料和demo都比較少,現在整理下之前的工作成果。 首先是進行配置工作,先導入opencv的一個代碼模塊 之後是導入ope

原创 安卓NDK開發

NDK首先是環境的搭建,在Studio中依次選擇Preferences-Appearance&Behavior-System Settings-Android SDK,選擇SDK Tools,在其中進行NDK的下載 在創建新項

原创 安卓中invalidate和requestLayout的實現和區別

安卓中invalidate和requestLaoyout都是刷新View用的,用下面這張圖來表示他們的流程 invalidate和postInvalidate的實現 兩者的區別:invalidate是在主線程調用,postInv

原创 EventBus的使用與原理

EventBus是一款針對Android優化的發佈/訂閱事件總線。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,線程之間傳遞消息.優點是開銷小,代碼更優雅。以及

原创 安卓Handler詳解

在安卓中由於主線程中不能進行耗時操作,我們往往需要另外開啓一個線程來進行耗時操作,操作完成之後,我們通常需要使用Handler來將結果展現在界面中,下面我來說明下handler的使用。Handler的創建public Handler mH

原创 (安卓)Annotation(註解)實例

Annotation就是註解了,JDK1.5新增加功能,該功能可用於類,構造方法,成員變量,方法,參數等的聲明中。 常見的比如說@Override,表明這個方法是重寫了父類的方法,以及我們在調用api的時候,時不時會看到某個方法

原创 android中webview與js的交互

最近做Android項目時需要進行webview與html頁面中的js進行交互,包括android調用js以及js調用android本地代碼,現將代碼整理記錄下。 整個佈局比較簡單,就是的一個TextView加一個WebView

原创 RxJava原理分析

首先聲明下,本文並不會講解RxJava的基本使用方法,建議對RxJava有一定了解的再來看本文。 RxJava已經有了2.0的版本,而本文是對1.0原理的描述。 RxJava是一個可以實現異步操作的框架,其優點包括可以方便的進

原创 Android Studio 打包成jar文件並混淆代碼

在Studio中混淆打包需要修改模塊下的build.gradle文件和proguard-rules.pro文件1:首先修改指定模塊的build.gradle文件,在末尾加上下述代碼task makeJar(type: proguard.g

原创 Java的垃圾回收機制

java在內存中大致可以分爲新生代以及老年代,其垃圾回收機制也不相同。 新生代一般會分爲三部分,一塊較大的Eden空間和兩塊較小的Survivor空間,其空間大小比例一般爲8:1:1,其中可以使用的有效部分爲一塊Eden和一塊Survi

原创 Activity的setContentView解析

我們一般設置Activity的界面,都是在onCreate方法中通過setContentView完成,之後就會在手機上顯示我們設置的界面,現在我們走下流程,看看系統究竟是如何做的。 首先Activity是在ActivityThread中

原创 AMS與Activity的交互

上面是Activity典型的生命週期流程圖,基本的就不講了,提兩個問題來求解下 1:當啓動一個新的Activity時,新舊兩個Activity的生命週期執行順序 2:當你在onCreat中調用startActivity或者fini

原创 AsyncTask原理

AsyncTask是android提供的輕量級的異步類,可以直接繼承AsyncTask類,在類中實現異步操作,並提供接口反饋當前異步執行的程度(可以通過接口實現UI進度更新),最後反饋執行的結果給UI主線程,且其是串行執行的,下面從源碼上

原创 安卓Context介紹

Context是什麼 Context的中文翻譯爲:語境; 上下文; 背景; 環境,在開發中我們經常說稱之爲“上下文”,那麼這個“上下文”到底是指什麼意思呢?在語文中,我們可以理解爲語境,在程序中,我們可以理解爲當前對象在程序中所處的一個環

原创 requestDisallowInterceptTouchEvent實現原理

我們爲了讓底部的控件處理事件,不被父控件攔截,一般我們會調用 v.getParent().requestDisallowInterceptTouchEvent(true); 來阻止父控件對事件的攔截,來看下它的實現原理。 首先明確下v.g