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