使用流程:
final CountDownLatch latch = new CountDownLatch(1);
latch.countDown();
latch.await();
final CountDownLatch latch = new CountDownLatch(1);
final RemoteCallback finishCallback = new RemoteCallback(new OnResultListener() {
@Override
public void onResult(Bundle result) {
latch.countDown();
}
}, null);
if (!mInterface.dumpHeap(process, userId, managed, mallocInfo, runGc, heapFile, fd,
finishCallback)) {
err.println("HEAP DUMP FAILED on process " + process);
return -1;
}
pw.println("Waiting for dump to finish...");
pw.flush();
try {
latch.await();
} catch (InterruptedException e) {
err.println("Caught InterruptedException");
}
来源: com.android.server.am.ActivityManagerShellCommand#runDumpHeap