isAndroidAppPidAlive function
bool
isAndroidAppPidAlive(
- int pid
)
Implementation
bool isAndroidAppPidAlive(int pid) {
if (!isAndroidTarget()) return false;
final device = readDevice();
if (device == null || device.isEmpty) return false;
final appId = readAppId();
try {
if (appId != null && appId.isNotEmpty) {
final result = Process.runSync(adbExecutable, [
'-s',
device,
'shell',
'pidof',
appId,
]);
if (result.exitCode == 0) {
final pids = (result.stdout as String)
.trim()
.split(RegExp(r'\s+'))
.where((value) => value.isNotEmpty)
.map(int.tryParse)
.whereType<int>();
if (pids.contains(pid)) return true;
}
}
} catch (_) {
// Fall back to ps parsing below.
}
try {
final result = Process.runSync(adbExecutable, [
'-s',
device,
'shell',
'ps',
'-A',
]);
if (result.exitCode != 0) return false;
final pidText = pid.toString();
final lines = (result.stdout as String).split('\n').where((line) => line.trim().isNotEmpty);
for (final line in lines) {
final fields = line.trim().split(RegExp(r'\s+'));
if (fields.length < 2) continue;
if (fields[1] == pidText) return true;
}
} catch (_) {
return false;
}
return false;
}