Я использую следующий код для загрузки файлов и обнаруживаю, что производительность действительно очень низкая по сравнению с практически одинаковым кодом на iOS и BlackBerry.
, а также тестирование на различных версиях SDKи OSX против Windows, я также пробовал приложение на различных устройствах - HTC Desire, Samsung Galaxy, Huwei Pulse, HTC Wildfire - все с ужасной производительностью по сравнению с устройствами iPhone и BlackBerry.
Посмотрите это видео, которое я сделалсравнить скорости на 3 эмуляторах: Android против iOS и BlackBerry
Вот код Android:
FileOutputStream fos = null;
InputStream input = null;
try {
fos = new FileOutputStream("XXXX");
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("XXXX");
HttpResponse response = httpclient.execute(httpget);
input = response.getEntity().getContent();
byte[] buffer = new byte[8192];
int readBytes;
while (((readBytes = input.read(buffer, 0, buffer.length)) != -1)
&& !thePackage.getPackageStatus().equals(
PackageStatus.STATUS_CANCEL_DOWNLOAD)) {
fos.write(buffer, 0, readBytes);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
}
}
if (input != null) {
try {
input.close();
} catch (IOException e) {
}
}
}
Я пробовал BufferedHttpEntity и другие буферы/ Threading стратегии, но эта версия кода является лучшей из всех опций, которые мы пробовали.Я запустил обширное профилирование кода и не вижу слишком много времени, потраченного между функциями верхнего уровня и нативным кодом в Dalvik / Apache Harmony.
Любые идеи были бы фантастическими, потому что плохая производительностьчто делает наше приложение практически непригодным для использования.
Спасибо,
Ник