W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---ohos.utils.Ashmem
public class Ashmem
extends Object
提供與匿名共享內(nèi)存(Ashmem)相關的方法,包括創(chuàng)建、關閉、映射和取消映射Ashmem,從Ashmem讀取數(shù)據(jù)和向Ashmem寫入數(shù)據(jù),獲取Ashmem大小,為Ashmem設置保護。
Ashmem 是由一個進程創(chuàng)建的。 您可以將創(chuàng)建的 Ashmem 對象映射到當前進程以讀取和寫入數(shù)據(jù)。 或者,您可以將此 Ashmem 對象傳輸并映射到另一個進程以進行數(shù)據(jù)讀取和寫入。 您需要確保多個進程之間并發(fā)讀寫操作的時序。
修飾符和類型 | 字段 | 描述 |
---|---|---|
static int | PROT_EXEC | 表示可以執(zhí)行 Ashmem 對象中的數(shù)據(jù)。 |
static int | PROT_NONE | 表示 Ashmem 對象中的數(shù)據(jù)無法讀取、寫入或執(zhí)行。 |
static int | PROT_READ | 表示可以讀取 Ashmem 對象中的數(shù)據(jù)。 |
static int | PROT_WRITE | 表示可以寫入 Ashmem 對象中的數(shù)據(jù)。 |
構造函數(shù) | 描述 |
---|---|
Ashmem(long nativeObject) |
修飾符和類型 | 方法 | 描述 |
---|---|---|
void | closeAshmem() | 關閉此 Ashmem。 |
static Ashmem | createAshmem(String name, int size) | 根據(jù)指定的調(diào)試名稱和內(nèi)存大小創(chuàng)建 Ashmem 對象。 |
static Ashmem | createAshmemFromExisting(long unwrappedNativeObject) | 通過復制現(xiàn)有的 Ashmem 對象來創(chuàng)建 Ashmem 對象。 |
protected void | finalize() | 當垃圾收集確定不再有對該對象的引用時,由對象上的垃圾收集器調(diào)用。 |
long | getAshmemIdentity() | 獲取 Ashmem 對象的身份。 |
int | getAShmemSize() | 獲取 Ashmem 對象的內(nèi)存大小。 |
boolean | mapAshmem(int mapType) | 使用指定的映射類型將 Ashmem 對象映射到此進程。 |
boolean | mapReadAndWriteAShmem() | 在 Ashmem 對象和此進程之間創(chuàng)建讀/寫映射。 |
boolean | mapReadOnlyAShmem() | 在 Ashmem 對象和此進程之間創(chuàng)建只讀映射。 |
byte[] | readFromAShmem(int size, int offset) | 從 Ashmem 對象中讀取數(shù)據(jù)。 |
boolean | setProtection(int protectionType) | 設置 Ashmem 對象的保護類型。 |
void | unmapAShmem() | 從此進程中取消映射 Ashmem 對象。 |
boolean | writeToAShmem(byte[] data, int size, int offset) | 將數(shù)據(jù)寫入 Ashmem 對象。 |
從類 java.lang.Object 繼承的方法 |
---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
public static final int PROT_EXEC
表示可以執(zhí)行 Ashmem 對象中的數(shù)據(jù)。
它可用于設置 Ashmem 對象的保護或映射類型。
public static final int PROT_NONE
表示 Ashmem 對象中的數(shù)據(jù)無法讀取、寫入或執(zhí)行。
它可用于設置 Ashmem 對象的保護或映射類型。
public static final int PROT_READ
表示可以讀取 Ashmem 對象中的數(shù)據(jù)。
它可用于設置 Ashmem 對象的保護或映射類型。
public static final int PROT_WRITE
表示可以寫入 Ashmem 對象中的數(shù)據(jù)。
它可用于設置 Ashmem 對象的保護或映射類型。
public Ashmem(long nativeObject)
public static Ashmem createAshmem(String name, int size)
根據(jù)指定的調(diào)試名稱和內(nèi)存大小創(chuàng)建 Ashmem 對象。
調(diào)試名稱僅用于在檢查已映射到此 Ashmem 的進程的內(nèi)存映射時查詢有關此 Ashmem 的信息。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
name | 調(diào)試名稱,方便查詢Ashmem信息。 |
size | 指示 Ashmem 的大小。 |
返回:
返回創(chuàng)建的 Ashmem 對象; 如果創(chuàng)建失敗則返回 null。
public static Ashmem createAshmemFromExisting(long unwrappedNativeObject)
通過復制現(xiàn)有的 Ashmem 對象來創(chuàng)建 Ashmem 對象。
兩個 Ashmem 對象指向同一個共享內(nèi)存區(qū)域。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
unwrappedNativeObject | 表示現(xiàn)有 Ashmem 對象的 ID。 您可以使用 getAshmemIdentity() 方法獲取 ID。 |
返回:
返回創(chuàng)建的 Ashmem 對象。
protected void finalize() throws Throwable
從類復制的描述:對象
當垃圾收集確定不再有對該對象的引用時,由對象上的垃圾收集器調(diào)用。子類覆蓋 finalize 方法以釋放系統(tǒng)資源或執(zhí)行其他清理。
finalize 的一般約定是,當 Java? 虛擬機確定不再有任何方法可以讓任何尚未終止的線程訪問該對象時調(diào)用它,除非是由于某個操作而導致的。由準備完成的其他對象或類的完成所采取。 finalize 方法可以采取任何行動,包括使該對象再次可供其他線程使用;然而,finalize 的通常目的是在對象被不可撤銷地丟棄之前執(zhí)行清理操作。例如,代表輸入/輸出連接的對象的 finalize 方法可能會執(zhí)行顯式 I/O 事務以在對象被永久丟棄之前中斷連接。
Object 類的 finalize 方法不執(zhí)行任何特殊操作;它只是正常返回。 Object 的子類可以覆蓋這個定義。
Java 編程語言不保證哪個線程將為任何給定對象調(diào)用 finalize 方法。但是,可以保證調(diào)用 finalize 的線程在調(diào)用 finalize 時不會持有任何用戶可見的同步鎖。如果 finalize 方法拋出未捕獲的異常,則忽略該異常并終止該對象的終結。
在為一個對象調(diào)用 finalize 方法后,不會采取進一步的行動,直到 Java 虛擬機再次確定沒有任何方法可以讓任何尚未終止的線程訪問該對象,包括可能的行動由其他準備完成的對象或類,此時該對象可能被丟棄。
對于任何給定的對象,Java 虛擬機永遠不會多次調(diào)用 finalize 方法。
finalize 方法拋出的任何異常都會導致該對象的終結被暫停,否則會被忽略。
覆蓋:
在類 Object 中完成
Throws:
Throw名稱 | Throw描述 |
---|---|
Throwable | 此方法引發(fā)的異常 |
public void closeAshmem()
關閉此 Ashmem。
通過createAshmem(java.lang.String,int)創(chuàng)建的Ashmem對象不再需要時,必須調(diào)用該方法及時關閉,防止內(nèi)存泄漏。
public boolean mapAshmem(int mapType)
使用指定的映射類型將 Ashmem 對象映射到此進程。
在使用 Ashmem 讀寫數(shù)據(jù)之前,必須調(diào)用該方法將 Ashmem 對象映射到該進程上。 映射大小是Ashmem對象的總內(nèi)存大小,映射從Ashmem的起始位置開始。 映射類型必須包含在為此 Ashmem 對象設置的保護類型中。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
mapType | 指示要使用的映射類型。 該值是 PROT_READ(可讀/不可讀)、PROT_WRITE(可寫/不可寫)、PROT_EXEC(可執(zhí)行/不可執(zhí)行)或 PROT_NONE 的按位或組合。 |
返回:
如果映射成功,則返回 true; 否則返回 false。
public boolean mapReadAndWriteAShmem()
在 Ashmem 對象和此進程之間創(chuàng)建讀/寫映射。
映射大小是Ashmem對象的總內(nèi)存大小,映射從Ashmem的起始位置開始。 調(diào)用該方法時,確保Ashmem對象的保護類型包括PROT_READ | PROT_WRITE。
返回:
如果映射成功,則返回 true; 否則返回 false。
public boolean mapReadOnlyAShmem()
在 Ashmem 對象和此進程之間創(chuàng)建只讀映射。
映射大小是Ashmem對象的總內(nèi)存大小,映射從Ashmem的起始位置開始。 調(diào)用此方法時,請確保 Ashmem 對象的保護類型包括 PROT_READ。
返回:
如果映射成功,則返回 true; 否則返回 false。
public void unmapAShmem()
從此進程中取消映射 Ashmem 對象。
在您使用完通過 mapAshmem(int)、mapReadAndWriteAshmem 或 mapReadOnlyAshmem 映射到您的進程的 Ashmem 后,您必須調(diào)用此方法取消映射以防止內(nèi)存泄漏。 如果需要,您可以再次創(chuàng)建映射。
public boolean setProtection(int protectionType)
設置 Ashmem 對象的保護類型。
保護類型只能添加,不能刪除。
一旦設置了保護類型,它將對所有到 Ashmem 對象的映射生效,無論這些映射是在設置保護類型之前還是之后創(chuàng)建的。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
protectionType | 指示要設置的保護類型。 該值是 PROT_READ、PROT_WRITE、PROT_EXEC 或 PROT_NONE 的按位或運算組合。 |
返回:
設置成功返回true; 否則返回 false。
public int getAShmemSize()
獲取 Ashmem 對象的內(nèi)存大小。
返回:
返回 Ashmem 對象的內(nèi)存大小。
public boolean writeToAShmem(byte[] data, int size, int offset)
將數(shù)據(jù)寫入 Ashmem 對象。
您需要控制多進程操作的時序。
在調(diào)用該方法之前,請確保您已經(jīng)獲得了Ashmem對象的寫權限,并且已經(jīng)為您的進程創(chuàng)建了到該Ashmem對象的寫映射。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
data | 表示要寫入 Ashmem 對象的數(shù)據(jù)。 |
size | 指示要寫入的數(shù)據(jù)的大小。 |
offset | 指示在 Ashmem 對象中寫入數(shù)據(jù)的起始位置。 |
返回:
如果數(shù)據(jù)寫入成功,則返回 true; 其他場景返回 false,如數(shù)據(jù)寫入越界或未獲得寫入權限。
public byte[] readFromAShmem(int size, int offset)
從 Ashmem 對象中讀取數(shù)據(jù)。
您需要控制多進程操作的時序。
在調(diào)用此方法之前,請確保您已獲得 Ashmem 對象的讀取權限,并且已為您的進程創(chuàng)建了到此 Ashmem 對象的讀取映射。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
size | 指示要讀取的數(shù)據(jù)的大小。 |
offset | 指示 Ashmem 對象中讀取數(shù)據(jù)的起始位置。 |
返回:
返回讀取的數(shù)據(jù)。
public long getAshmemIdentity()
獲取 Ashmem 對象的身份。
返回:
返回 Ashmem 對象的標識。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: