原创 有關線程的筆記

每創建一個線程都要消耗內存,每個線程都有自己的棧空間(大約1 M),也就是說每創建一個線程,操作系統就會給該線程分配1 M的空間。而且當線程執行完時間片後需要把數據保存至內存或硬盤中,下一個線程執行時又要從內存或硬盤中取出對應自己的

原创 Binder之內存映射淺談

  關於Binder驅動的內存映射,以下部分僅爲我的個人理解,如果有誤請多多指教。   先來看看《Android Binder設計與實現–設計篇》中的一段話:   暫且撇開Binder,考慮一下傳統的IPC方式中,數據是怎樣從發送端

原创 Binder之ProcessState和IPCThreadState類分析

ProcessState   ProcessState表示進程狀態,一個進程就一個ProcessState對象。它的職責:1、打開Binder驅動;2、建立線程池。 /frameworks/native/include/binder

原创 Android Studio導入修改過的系統源碼

導入系統源碼 在主工程模塊(如:app)下新建一個文件夾,名字隨意,比如exlibs。 把android.jar放入exlibs文件夾中。 在主工程模塊的build.gradle(如:app/build.gradle)加入如下一句話

原创 Binder驅動是如何維護本地Binder和Binder代理的映射關係

通信過程: binder設備驅動會爲每個進程分配一個數據結構binder_proc,每進程中的每個用到了binder通信的線程分配數據結構binder_thread。 binder設備驅動會爲服務進程中的每個服務對象分配數據結構bi

原创 Binder學習指南

Binder學習指南 發表於 2016-01-12   |  

原创 Binder筆記

進程隔離:一個進程佔一個內存空間,各個進程的內存空間完全隔離,數據不共享。 內核空間(Kernel)是系統內核運行的空間,用戶空間(User Space)是用戶程序運行的空間。爲了保證安全性,它們之間是隔離的。 Linux Kernel

原创 窗口機制的筆記

setContentView Activity的生命週期由ActivityThread管控。 Activity被實例化後最先調用的方法是attach(),在attach()中實例化PhoneWindow。 Activity.setCon

原创 Activity與AppCompatActivity去掉標題欄

Activity與AppCompatActivity去掉標題欄 Activity去標題欄 1.代碼中實現 requestWindowFeature(Window.FEATURE_NO_TITLE); //這句代碼必須寫在setConten

原创 報文的編碼解碼

常見的編碼方式:ASCii,BCD,HEX,GBK,UTF-8等 不同編碼方式的區別如下: 編碼的對象不同。如:ASCii、BCD、GBK、UTF-8編碼字符,HEX編碼字符和數字。 編碼的範圍不同。如:ASCii可編碼的字符有2

原创 Android UI問題記錄

連續切換Fragment時,這些Fragment中的EditText不會自動彈出軟鍵盤的問題。 EditText editText = findViewById(R.id.edittext); editText.req

原创 C++知識點雜談

C++知識點雜談 C++中的三種賦值方式: 按值傳遞。一個參數的值會複製給另一個參數: int a, b; a = b; 按地址值傳遞。一個地址值複製給一個指針: int a; int *p; p = &a; 按引用傳遞。不開闢新的

原创 C++面向對象程序設計

C++面向對象程序設計 在C++語言中,當我們使用基類的引用或指針調用一個虛函數時將發生動態綁定,即JAVA中的多態 基類通常要定義一個虛析構函數,即使該函數不執行任何實際操作,也是如此。 在C++中基類的成員函數有兩種:1、基類希望派

原创 將Activity設置成透明窗口且淡入淡出

將Activity設置成透明窗口且淡入淡出 1.創建淡入淡出的動畫文件 fade_in.xml <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://s

原创 ViewRootImpl事件分發筆記

用戶點擊屏幕產生觸摸行爲,該觸摸行爲由底層硬件捕獲並傳遞。 硬件 -> ViewRootImpl -> DecorView -> PhoneWindow -> Activity 在ViewRootImpl中準備了一條InputSta