Android: Reduce time to open settings widget

Two major areas of improvement:
- Make connections last, so that the initial setup does not trigger any
  unnecessary checks.
- Make fetching the list of android virtual devices a background
  operation.

Together they reduce the time needed to open the settings for me by
roughly 10 times.

Task-number: QTCREATORBUG-13735
Change-Id: I0839853dcdbdfe20a183a27888e55d3c56a9b815
Reviewed-by: BogDan Vatra <bogdan@kde.org>
This commit is contained in:
Daniel Teske
2015-01-08 17:05:09 +01:00
parent 8a29109fe9
commit ab372deb1f
5 changed files with 75 additions and 77 deletions

View File

@@ -600,12 +600,22 @@ bool AndroidConfig::removeAVD(const QString &name) const
return !proc.exitCode();
}
QFuture<QVector<AndroidDeviceInfo>> AndroidConfig::androidVirtualDevicesFuture()
{
return QtConcurrent::run(&AndroidConfig::androidVirtualDevicesImpl, androidToolPath(), androidToolEnvironment());
}
QVector<AndroidDeviceInfo> AndroidConfig::androidVirtualDevices() const
{
return androidVirtualDevicesImpl(androidToolPath(), androidToolEnvironment());
}
QVector<AndroidDeviceInfo> AndroidConfig::androidVirtualDevicesImpl(const Utils::FileName &androidTool, const Utils::Environment &environment)
{
QVector<AndroidDeviceInfo> devices;
QProcess proc;
proc.setProcessEnvironment(androidToolEnvironment().toProcessEnvironment());
proc.start(androidToolPath().toString(),
proc.setProcessEnvironment(environment.toProcessEnvironment());
proc.start(androidTool.toString(),
QStringList() << QLatin1String("list") << QLatin1String("avd")); // list available AVDs
if (!proc.waitForFinished(5000)) {
proc.terminate();