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(Anonymous Shared Memory)簡要介紹和學習計劃Android記憶體
- Android系統匿名共享記憶體Ashmem(Anonymous Shared Memory)簡要介紹和學習計劃 (四)Android記憶體
- Android系統匿名共享記憶體Ashmem(Anonymous Shared Memory)簡要介紹和學習計劃 (三)Android記憶體
- Android系統匿名共享記憶體Ashmem(Anonymous Shared Memory)簡要介紹和學習計劃 (二)Android記憶體
- Android匿名共享記憶體(Ashmem)原理Android記憶體
- Android系統中的廣播(Broadcast)機制簡要介紹和學習計劃 .AndroidAST
- Dalvik虛擬機器簡要介紹和學習計劃虛擬機
- Android程式間通訊(IPC)機制Binder簡要介紹和學習計劃Android
- ASMM (Auto Shared Memory Manangement) 自動共享記憶體管理ASMNaN記憶體
- ART執行時垃圾收集機制簡要介紹和學習計劃
- Dalvik虛擬機器垃圾收集機制簡要介紹和學習計劃虛擬機
- javascript記憶體管理簡單介紹JavaScript記憶體
- Jenkinsant介紹(學習筆記五)Jenkins筆記
- javascript 記憶體使用管理簡單介紹JavaScript記憶體
- 計算機記憶體管理介紹計算機記憶體
- memory儲存引擎 /MySQL記憶體表的特性與使用介紹儲存引擎MySql記憶體
- Linux系統程式設計—共享記憶體之mmapLinux程式設計記憶體
- CUDA記憶體介紹記憶體
- 記憶體回收介紹記憶體
- 【讀書筆記】Android的Ashmem機制學習筆記Android
- 作業系統——記憶體管理學習筆記作業系統記憶體筆記
- jvm堆記憶體和GC簡介JVM記憶體GC
- JVM中記憶體和GC的介紹JVM記憶體GC
- 記憶體檔案系統的再學習記憶體
- GPU程式設計(五): 利用好shared memoryGPU程式設計
- Unix高階程式設計學習筆記--系統呼叫簡介程式設計筆記
- 記憶體管理簡介記憶體
- linux作業系統修改共享記憶體的簡單方法(轉)Linux作業系統記憶體
- 清華大學-作業系統學習筆記(五)--- 虛擬記憶體技術作業系統筆記記憶體
- Linux系統和核心初始化過程簡要介紹(轉)Linux
- [CareerCup] 8.9 An In-memory File System 記憶體檔案系統記憶體
- Linux系統程式設計之命名管道與共享記憶體Linux程式設計記憶體
- javascript匿名函式簡單介紹JavaScript函式
- Bootstrap速學教程之簡要介紹boot
- ros學習檔案系統介紹ROS
- Sieve—Android 記憶體分析系統Android記憶體
- MQTT簡要介紹MQQT
- STM32記憶體結構介紹和FreeRTOS記憶體分配技巧記憶體