Android系統匿名共享記憶體Ashmem(Anonymous Shared Memory)簡要介紹和學習計劃 (五)
內部函式getMemoryFile用來從MemoryService中獲得匿名共享記憶體檔案的描述符。同樣,如果是第一次呼叫該函式,則會透過IMemoryService的getFileDescriptor介面來獲得MemoryService中的匿名共享記憶體檔案的描述符,然後用這個檔案描述符來建立一個MemoryFile例項,並儲存在類成員變數memoryFile中,以後再呼叫這個函式時,就可以直接返回memoryFile了。
有了memoryService和memoryFile後,我們就可以在Client端訪問Server端建立的匿名共享記憶體了。點選Read按鈕時,就透過memoryFile的readBytes介面把共享記憶體中的整數讀出來,並顯示在文字框中;點選Write按鈕時,就透過memoryService這個代理類的setVal介面來呼叫MemoryService的本地實現類的setVal服務,從而把文字框中的數值寫到Server端建立的匿名共享記憶體中去;點選Clear按鈕時,就會清空文字框的內容。這樣,我們就可以透過Read和Write按鈕來驗證我們是否在Client和Server兩個程式中實現記憶體共享了。
現在,我們再來看看Client介面的配置檔案,它定義在res/layout/main.xml檔案中:
- xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android=""
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/value">
- TextView>
- <EditText
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:id="@+id/edit_value"
- android:hint="@string/hint">
- EditText>
- LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="center">
- <Button
- android:id="@+id/button_read"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/read">
- Button>
- <Button
- android:id="@+id/button_write"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/write">
- Button>
- <Button
- android:id="@+id/button_clear"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/clear">
- Button>
- LinearLayout>
- LinearLayout>
- xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android=""
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/value">
- TextView>
- <EditText
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:id="@+id/edit_value"
- android:hint="@string/hint">
- EditText>
- LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="center">
- <Button
- android:id="@+id/button_read"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/read">
- Button>
- <Button
- android:id="@+id/button_write"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/write">
- Button>
- <Button
- android:id="@+id/button_clear"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/clear">
- Button>
- LinearLayout>
- LinearLayout>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13164110/viewspace-747975/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android匿名共享記憶體(Ashmem)原理Android記憶體
- Jenkinsant介紹(學習筆記五)Jenkins筆記
- GPU程式設計(五): 利用好shared memoryGPU程式設計
- Linux系統程式設計—共享記憶體之mmapLinux程式設計記憶體
- 計算機記憶體管理介紹計算機記憶體
- CUDA記憶體介紹記憶體
- 記憶體回收介紹記憶體
- JVM中記憶體和GC的介紹JVM記憶體GC
- jvm堆記憶體和GC簡介JVM記憶體GC
- Sieve—Android 記憶體分析系統Android記憶體
- 清華大學-作業系統學習筆記(五)--- 虛擬記憶體技術作業系統筆記記憶體
- Android Studio Profiler Memory (記憶體分析工具)的簡單使用及問題Android記憶體
- 作業系統——記憶體管理學習筆記作業系統記憶體筆記
- Linux系統程式設計之命名管道與共享記憶體Linux程式設計記憶體
- Android記憶體優化(四)解析Memory Monitor、Allocation Tracker和Heap DumpAndroid記憶體優化
- STM32記憶體結構介紹和FreeRTOS記憶體分配技巧記憶體
- 記憶體檔案系統的再學習記憶體
- Unix高階程式設計學習筆記--系統呼叫簡介程式設計筆記
- Memory記憶體傳值記憶體
- VisionPro學習筆記(1)——軟體介紹和基本使用筆記
- 【Android系統】Android系統架構簡介Android架構
- Java記憶體模型簡介Java記憶體模型
- Java記憶體模型 - 簡介Java記憶體模型
- Win10系統GPU共享記憶體怎麼關閉?Win10系統GPU共享記憶體的關閉方法Win10GPU記憶體
- ros學習檔案系統介紹ROS
- Android 輸入系統介紹Android
- Android系統介紹與框架Android框架
- Unity Memory Profiler 記憶體分析Unity記憶體
- Allowed memory size 記憶體不足記憶體
- 記憶體管理(Debug Memory Graph)記憶體
- 元學習簡單介紹
- 持久記憶體指令(PMDK)簡介記憶體
- Linux系統的發展歷史和學習前景介紹Linux
- 學習筆記-React的簡單介紹&工作原理筆記React
- [Linux]共享記憶體Linux記憶體
- POSIX 共享記憶體記憶體
- Golang 共享記憶體Golang記憶體
- 12. 記憶體管理(Memory Management)記憶體
- 共享記憶體對映(linux程式與執行緒學習筆記)記憶體Linux執行緒筆記