diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index 237e850cfb572b7898913241e2478281b77109b1..80c49b55646eeb20bc9f5dc83fa8c21309743568 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -249,15 +249,13 @@ static int extractPid(const QString &exeName, const QByteArray &psOutput) QByteArray AndroidRunner::runPs() { - QProcess psProc; - QStringList args = m_selector; - args << _("shell") << _("ps"); + QByteArray psLine("ps"); if (m_isBusyBox) - args << _("-w"); - - psProc.start(m_adb, args); - psProc.waitForFinished(); - return psProc.readAll(); + psLine += " -w"; + psLine += '\n'; + m_psProc.write(psLine); + m_psProc.waitForBytesWritten(psLine.size()); + return m_psProc.readAllStandardOutput(); } void AndroidRunner::checkPID() @@ -322,6 +320,7 @@ void AndroidRunner::forceStop() void AndroidRunner::start() { m_adbLogcatProcess.start(m_adb, selector() << _("logcat")); + m_psProc.start(m_adb, selector() << _("shell")); Utils::runAsync(&AndroidRunner::asyncStart, this); } @@ -551,6 +550,8 @@ void AndroidRunner::stop() //QObject::disconnect(&m_adbLogcatProcess, 0, this, 0); m_adbLogcatProcess.kill(); m_adbLogcatProcess.waitForFinished(); + m_psProc.kill(); + m_psProc.waitForFinished(); foreach (const QStringList &entry, m_androidRunnable.afterFinishADBCommands) { QProcess adb; adb.start(m_adb, selector() << entry); diff --git a/src/plugins/android/androidrunner.h b/src/plugins/android/androidrunner.h index 84ae0c69ee37032ac7feae44ff94b774df1a4dce..32f7418ad9e2b4e6e973e0c83531a822bd499986 100644 --- a/src/plugins/android/androidrunner.h +++ b/src/plugins/android/androidrunner.h @@ -92,6 +92,7 @@ private: private: QProcess m_adbLogcatProcess; + QProcess m_psProc; QTimer m_checkPIDTimer; bool m_wasStarted; int m_tries;