原创 Android AIDL的用法

Android AIDL的用法   一、什麼是AIDL服務    一般創建的服務並不能被其他的應用程序訪問。爲了使其他的應用程序也可以訪問本應用程序提供的服務,Android系統採用了遠程過程調用(Remote

原创 Android源碼sp<Camera>和sp<ICameraClient>爲什麼類型轉換能成功

sp<Camera> mCamera 是Camera的成員變量, sp<Camera> c = new Camera(cameraId);          sp<ICameraClient> cl = c;                

原创 camera binder 機制實現原理 與 調試

Camera App通過framework中Camera java類進入jni部分,在android_hardware_Camera.cpp中: android_hardware_Camera_native_setup() {

原创 struct binder_node 說明

struct binder_node {                 int debug_id;               // 幫助調試用的     // 當Binder實體對象的引用計數由0變爲1或由1變爲0時,Binder驅動程

原创 c++多線程(3)之互斥量(mutex)、鎖(lock,unlock,lock_guard)的應用

多線程中,多個線程對共享的數據進行訪問,應該是最常見的應用。 如果多個線程都只是對共享數據進行讀操作,還不會有問題,但是如果有的線程讀數據,有的線程寫數據,這時候就會出現問題。比如A線程寫數據,但是寫的這個過程進行到一半,B線程就去讀,這個

原创 Kotlin技術分享:擴展函數和擴展屬性

  一、擴展函數和擴展屬性   1.1、擴展函數   擴展函數用於爲一個類增加一種新的行爲,這是爲缺少有用函數的類進行擴展的途徑。擴展函數的用途就類似於在 Java 中實現的靜態工具方法。而在 Kotlin 中使用擴展函數的一個優勢就是我們

原创 Kotlin專題「八」:屬性與字段(Getter()與Setter(),後備字段field)

一、概述   前面已經爲大家講解了類的使用以及屬性的相關知識,在一個類中基本上都會出現屬性和字段的,屬性在變量和常量的文章中有詳細講解到,這裏會重新簡單介紹到。 1.1 聲明屬性 Java 類中的變量聲明爲成員變量,而 Kotlin 中聲明

原创 Kotlin by 關鍵字詳解

委託模式已已經證明是實現繼承的一個很好的替代方式 Kotlin 中 by 就是用於實現委託的。 fun main(args: Array<String>) {     val b =BaseImpl("base")     Derived(

原创 C++ 標準庫bind函數

bind 函數在頭文件 functional中   調用bind的一般形式:   auto newCallable = bind (callable, arg_list);   newCallable爲一個新可調用對象,callabl

原创 C++直接初始化與複製初始化的區別深入解析

這篇文章主要介紹了C++直接初始化與複製初始化的區別深入解析,是很多C++初學者需要深入瞭解的重要概念,需要的朋友可以參考下   C++中直接初始化與複製初始化是很多初學者容易混淆的概念,本文就以實例形式講述二者之間的

原创 理解Android Binder機制(1/3):驅動篇

Binder的實現是比較複雜的,想要完全弄明白是怎麼一回事,並不是一件容易的事情。 這裏面牽涉到好幾個層次,每一層都有一些模塊和機制需要理解。這部分內容會分爲三篇文章來講解。本文是第一篇,首先會對整個Binder機制做一個架構性的講解,然後

原创 c++ 對象作爲參數傳遞

對象作爲參數傳遞時是傳值。把實參的對象賦值給形參。因此效率有點低。 c++傳參方式可以分爲2種: 1.傳值 (指針作爲參數,本質上也只是把地址作爲值傳遞了而已)。 2.傳引用。 所以,一切傳遞方式不是傳引用就是傳值。不像javascript

原创 C++類指針類型的成員變量的淺複製與深複製

本篇文章旨在闡述C++類的構造,拷貝構造,析構機制,以及指針成員變量指針懸空問題的解決。需要讀者有較好的C++基礎,熟悉引用,const的相關知識。 引言:             類作爲C++語言的一種數據類型,是對C語言結構體的一種擴

原创 看完這個你還不理解右值引用和移動構造 你就可以來咬我(下)

共分三篇,這是第一篇。另外兩篇,看完這個你還不理解右值引用和移動構造 你就可以來咬我(上),看完這個你還不理解右值引用和移動構造 你就可以來咬我(中)。 下面是新標準下的其他特性(共十點),瞭解一下,總有用上的時候。 C++11 新特性分

原创 C++拷貝構造函數的參數爲什麼必須使用引用類型(無限遞歸)

在C++中, 構造函數,拷貝構造函數,析構函數和賦值函數(賦值運算符重載)是最基本不過的需要掌握的知識。 但是如果我問你“拷貝構造函數的參數爲什麼必須使用引用類型?”這個問題, 你會怎麼回答? 或許你會回答爲了減少一次內存拷貝? 很慚愧的是