透過集合功能整理內容
你可以依據偏好儲存及分類內容。
ProcessUtil
public
final
class
ProcessUtil
extends Object
java.lang.Object
|
↳ |
com.android.sts.common.ProcessUtil
|
各種輔助工具,用於在裝置上尋找、等待及終止程序
摘要
公用方法 |
static
Optional<IFileEntry>
|
findFileLoadedByProcess(ITestDevice device, String process, String filenameSubstr)
傳回指定程序載入的第一個檔案的檔案項目,並指定名稱
|
static
Optional<List<String>>
|
findFilesLoadedByProcess(ITestDevice device, int pid, Pattern filePattern)
傳回指定程序載入的指定檔案檔案名稱。
|
static
Optional<String>
|
getProcessName(ITestDevice device, int pid)
從 /proc/pid/cmdline 取得內容。
|
static
boolean
|
killAll(ITestDevice device, String pgrepRegex, long timeoutMs, boolean expectExist)
將 SIGKILL 傳送至符合模式的所有程序。
|
static
boolean
|
killAll(ITestDevice device, String pgrepRegex, long timeoutMs)
將 SIGKILL 傳送至符合模式的所有程序。
|
static
void
|
killPid(ITestDevice device, int pid, long timeoutMs)
將 SIGKILL 傳送至程序,然後等待程序結束。
|
static
void
|
killPid(ITestDevice device, int pid, int signal, long timeoutMs)
向程序傳送信號,並等待程序結束。
|
static
Optional<List<String>>
|
listOpenFiles(ITestDevice device, int pid)
傳回目前開啟的指定程序檔案名稱。
|
static
Optional<Integer>
|
pidOf(ITestDevice device, String pgrepRegex)
取得與傳遞至 `pgrep` 的模式相符的單一 pid。
|
static
Optional<Map<Integer, String>>
|
pidsOf(ITestDevice device, String pgrepRegex)
取得與傳遞至 `pgrep` 的模式相符的 pid。
|
static
void
|
waitPidExited(ITestDevice device, int pid)
等待程序結束。
|
static
void
|
waitPidExited(ITestDevice device, int pid, long timeoutMs)
等待程序結束。
|
static
Map<Integer, String>
|
waitProcessRunning(ITestDevice device, String pgrepRegex, long timeoutMs)
等待找到特定規則運算式所對應的執行中程序。
|
static
Map<Integer, String>
|
waitProcessRunning(ITestDevice device, String pgrepRegex)
等待找到特定規則運算式所對應的執行中程序。
|
static
AutoCloseable
|
withProcessKill(ITestDevice device, String pgrepRegex, Runnable beforeCloseKill, long timeoutMs)
在測試開始和結束時終止程序。
|
static
AutoCloseable
|
withProcessKill(ITestDevice device, String pgrepRegex, Runnable beforeCloseKill)
在測試開始和結束時終止程序。
|
常數
PROCESS_POLL_PERIOD_MS
public static final long PROCESS_POLL_PERIOD_MS
常數值:
250
(0x00000000000000fa)
PROCESS_WAIT_TIMEOUT_MS
public static final long PROCESS_WAIT_TIMEOUT_MS
常數值:
10000
(0x0000000000002710)
公用方法
findFileLoadedByProcess
public static Optional<IFileEntry> findFileLoadedByProcess (ITestDevice device,
String process,
String filenameSubstr)
傳回指定程序載入的第一個檔案的檔案項目,且該程序具有指定名稱
參數 |
device |
ITestDevice :要執行的裝置 |
process |
String :要查找的程序 pgrep 模式 |
filenameSubstr |
String :程序載入的檔案名稱/路徑部分 |
傳回 |
Optional<IFileEntry> |
裝置上檔案路徑的 IFileEntry 選用項目 (如果有的話)。 |
擲回 |
DeviceNotAvailableException |
|
findFilesLoadedByProcess
public static Optional<List<String>> findFilesLoadedByProcess (ITestDevice device,
int pid,
Pattern filePattern)
傳回指定程序載入的指定檔案檔案名稱。
參數 |
device |
ITestDevice :要執行的裝置 |
pid |
int :要搜尋的程序 ID |
filePattern |
Pattern :要傳回的檔案名稱格式 |
傳回 |
Optional<List<String>> |
篩選檔案的選用項目;如果找不到程序或無法讀取已開啟的檔案,則為空白。 |
擲回 |
DeviceNotAvailableException |
|
getProcessName
public static Optional<String> getProcessName (ITestDevice device,
int pid)
從 /proc/pid/cmdline 取得內容。
參數 |
device |
ITestDevice :要使用的裝置 |
pid |
int :要取得名稱的程序 ID |
傳回 |
Optional<String> |
/proc/pid/cmdline 內容的選用字串;如果找不到 pid,則為空白 |
擲回 |
DeviceNotAvailableException |
|
killAll
public static boolean killAll (ITestDevice device,
String pgrepRegex,
long timeoutMs,
boolean expectExist)
將 SIGKILL 傳送至符合模式的所有程序。
參數 |
device |
ITestDevice :要使用的裝置 |
pgrepRegex |
String :代表 pgrep 規則運算式的字串 |
timeoutMs |
long :在擲回 TimeoutException 之前等待多久 |
expectExist |
boolean :在沒有終止任何程序時,是否應擲回例外狀況 |
killAll
public static boolean killAll (ITestDevice device,
String pgrepRegex,
long timeoutMs)
將 SIGKILL 傳送至符合模式的所有程序。
參數 |
device |
ITestDevice :要使用的裝置 |
pgrepRegex |
String :代表 pgrep 規則運算式的字串 |
timeoutMs |
long :在擲回 TimeoutException 之前等待多久 |
killPid
public static void killPid (ITestDevice device,
int pid,
long timeoutMs)
將 SIGKILL 傳送至程序,然後等待程序結束。
參數 |
device |
ITestDevice :要使用的裝置 |
pid |
int :等待程序結束的 ID |
timeoutMs |
long :在擲回 TimeoutException 之前等待多久 |
killPid
public static void killPid (ITestDevice device,
int pid,
int signal,
long timeoutMs)
傳送信號至程序,並等待程序結束。
參數 |
device |
ITestDevice :要使用的裝置 |
pid |
int :等待程序結束的 ID |
signal |
int :要傳送至程序的信號 |
timeoutMs |
long :在擲回 TimeoutException 之前等待多久 |
listOpenFiles
public static Optional<List<String>> listOpenFiles (ITestDevice device,
int pid)
傳回指定程序目前開啟的檔案名稱。
參數 |
device |
ITestDevice :要執行的裝置 |
pid |
int :要搜尋的程序 ID |
傳回 |
Optional<List<String>> |
可選的已開啟檔案;如果找不到程序或無法讀取已開啟的檔案,則為空白。 |
擲回 |
DeviceNotAvailableException |
|
pidOf
public static Optional<Integer> pidOf (ITestDevice device,
String pgrepRegex)
取得與傳遞至 `pgrep` 的模式相符的單一 PID。如果有超過一個 PID 與模式相符,就會擲回 IllegalArgumentException
。
參數 |
device |
ITestDevice :要使用的裝置 |
pgrepRegex |
String :代表 pgrep 規則運算式的字串 |
傳回 |
Optional<Integer> |
可選的 PID 整數;如果 pgrep 未傳回 EXIT_SUCCESS,則為空白 |
擲回 |
DeviceNotAvailableException |
|
IllegalArgumentException |
|
pidsOf
public static Optional<Map<Integer, String>> pidsOf (ITestDevice device,
String pgrepRegex)
取得與傳遞至 `pgrep` 的模式相符的 pid。由於 /proc/pid/comm 已截斷,因此會傳遞 `-f` 給 `pgrep`,以便檢查完整指令列。
參數 |
device |
ITestDevice :要使用的裝置 |
pgrepRegex |
String :代表 pgrep 規則運算式的字串 |
傳回 |
Optional<Map<Integer, String>> |
可選的 pid 對應指令列;如果 pgrep 未傳回 EXIT_SUCCESS,則為空白 |
擲回 |
DeviceNotAvailableException |
|
waitPidExited
public static void waitPidExited (ITestDevice device,
int pid)
等待程序結束。這不是等待變更,而是直接不存在。在兩次輪詢之間重複使用 pid 是可能的,但不太可能
參數 |
device |
ITestDevice :要使用的裝置 |
pid |
int :等待程序結束的 ID |
waitPidExited
public static void waitPidExited (ITestDevice device,
int pid,
long timeoutMs)
等待程序結束。這不是等待變更,而是直接不存在。在兩次輪詢之間重複使用 pid 是可能的,但不太可能
參數 |
device |
ITestDevice :要使用的裝置 |
pid |
int :等待程序結束的 ID |
timeoutMs |
long :在擲回 TimeoutException 之前等待多久 |
waitProcessRunning
public static Map<Integer, String> waitProcessRunning (ITestDevice device,
String pgrepRegex,
long timeoutMs)
等待找到特定規則運算式所對應的執行中程序。
參數 |
device |
ITestDevice :要使用的裝置 |
pgrepRegex |
String :代表 pgrep 規則運算式的字串 |
timeoutMs |
long :在擲回 TimeoutException 之前等待多久 |
傳回 |
Map<Integer, String> |
從 pidsOf(...) 取得的 pid 到指令對應 |
擲回 |
TimeoutException |
|
DeviceNotAvailableException |
|
waitProcessRunning
public static Map<Integer, String> waitProcessRunning (ITestDevice device,
String pgrepRegex)
等待找到特定規則運算式所對應的執行中程序。
參數 |
device |
ITestDevice :要使用的裝置 |
pgrepRegex |
String :代表 pgrep 規則運算式的字串 |
傳回 |
Map<Integer, String> |
從 pidsOf(...) 取得的 pid 到指令對應 |
擲回 |
TimeoutException |
|
DeviceNotAvailableException |
|
withProcessKill
public static AutoCloseable withProcessKill (ITestDevice device,
String pgrepRegex,
Runnable beforeCloseKill,
long timeoutMs)
在測試開始和結束時終止程序。
參數 |
device |
ITestDevice :要使用的裝置 |
pgrepRegex |
String :要給 pgrep 的要終止的程序名稱模式 |
beforeCloseKill |
Runnable :在測試結束時,在一般環境中終止程序前,需要清除的任何動作的 runnable。可為空值。 |
timeoutMs |
long :等待程序終止的時間長度 (以毫秒為單位) |
傳回 |
AutoCloseable |
這個物件會在關閉時再次終止程序 |
withProcessKill
public static AutoCloseable withProcessKill (ITestDevice device,
String pgrepRegex,
Runnable beforeCloseKill)
在測試開始和結束時終止程序。
參數 |
device |
ITestDevice :要使用的裝置 |
pgrepRegex |
String :要給 pgrep 的要終止的程序名稱模式 |
beforeCloseKill |
Runnable :在測試結束時,在一般環境中終止程序前,需要清除的任何動作的 runnable。可為空值。 |
傳回 |
AutoCloseable |
這個物件會在關閉時再次終止程序 |
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2025-03-26 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-03-26 (世界標準時間)。"],[],[]]