2015-01-08 6 views
2

Я работаю над приложением как в версии для iphone, так и для Android. Я использовал ASP.net web api в IIS для обслуживания своих сетевых запросов. На iphone все сетевые запросы являются шелковистыми и быстрыми, даже сервер простаивает некоторое время, ответ по-прежнему быстро. С другой стороны, сетевые запросы от Android (я выбираю библиотеку Volley) ведут себя по-разному. Если я временно останусь на Android-клиенте (всего около 30 секунд), следующий запрос будет намного медленнее. Но как только я начал первые запросы, все последующие запросы (должны сделать в течение 30 секунд) так же быстро, как часть счетчика iphone.андроид сетью первый запрос медленный, но следующий запрос намного быстрее

Я захватил мои запросы с Android с помощью tcpdump и открыл в Wireshark.

К сожалению, не знаю, как сделать изображение больше, пожалуйста, увеличить изображение в браузере ...

быстрый запрос: (следуют первый запрос в течение 30 секунд)

fast request

медленно запрос (на холостом ходу более 30 секунд, а затем сделать первый запрос):

slow request

Примечание медленный запрос отправляет запрос до установления связи и имеет много повторной передачи. Есть ли способ сделать мой запрос в сети Volley так же быстро, как и запрос сети iphone, а не замедлить работу после простоя? действительно хочу понять это, потому что медленность на android может занять дольше 2 секунд, и это действительно плохой пользовательский опыт.

Пожалуйста, кто-нибудь может помочь или хотя бы дать мне направление?

+0

Вы уверены, что телефон не разрывает его связь Wi-Fi, когда ожидания слишком долго? – Yoel

+0

Я тестировал другие приложения, которые используют Интернет на одном устройстве, и не реагировал так медленно, как мое приложение. Я думаю, Wi-Fi не отключается. –

+0

Возможно, другие приложения запросят, что соединение Wi-Fi остается активным? Можете ли вы пинговать свой телефон с какой-либо другой машины и убедиться, что он не перестает отвечать при выполнении теста, описанного в вашем вопросе? – Yoel

ответ

0

У меня была такая же проблема, в некоторых телефонах, но я изменил:

Volley.newRequestQueue(getApplicationContext()) 

к:

Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); 
Network network = new BasicNetwork(new HurlStack()); 
mRequestQueue = Volley.newRequestQueue(getApplicationContext()); 
Instantiate the RequestQueue with the cache and network. 
mRequestQueue = new RequestQueue(cache, network); 
mRequestQueue.start(); 
+0

Можете ли вы объяснить немного больше, что вы сделали? Вы «Замените»: Volley.newRequestQueue (getApplicationContext()) с: Кэш-кеш = новый DiskBasedCache (getCacheDir(), 1024 * 1024); Сетевая сеть = новая базовая сеть (новый HurlStack()); mRequestQueue = Volley.newRequestQueue (getApplicationContext()); Создайте экземпляр RequestQueue с кешем и сетью. mRequestQueue = new RequestQueue (кеш, сеть); mRequestQueue.start(); Эта оригинальная линия все еще там –

Смежные вопросы