Nano Hash - криптовалюты, майнинг, программирование

Проблемы и вклад в Volley

Поскольку была эта потрясающая презентация о Volley, я попытался включить ее в проект, который я работаю над. Я обнаружил, что исправляю некоторые ошибки, обнаруженные в опубликованном исходном коде.

Кто-нибудь знает, будет ли какой-нибудь проект GitHub, где можно внести свой вклад, или есть другой способ сообщить разработчику об ошибках и запросах на добавление функций?

Что касается проблем, которые у меня были с Volley:

1. Кажется, что перенаправление не работает должным образом: Volley возвращает код ошибки 302 вместо перенаправления на место, указанное в заголовке ответа.

2. Получение каталога кеша не работает на моем эмуляторе 4.2.2:

cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);  
final String cacheDir1 = "/Android/data/cache/";
cacheDir = new File(Environment.getExternalStorageDirectory().getPath() + cacheDir1);

This workaround is platform specific, though. Just wanted to add it for completions sake.

Кроме того, я думаю, что Volley — действительно потрясающий фрагмент кода, именно то, что я искал, пока не сделал это сам;)

Обновление 1

Вот еще одна ссылка на страницу вклада AOSP. Я думал, что это скорее автономная библиотека. Я проверю это, хотя я все еще ценю больше информации и руководств по Volley. Исходный код, который я предложил, — это просто быстрое и грязное исправление, которое сработало в моем демонстрационном проекте.

Обновление 2

Я нашел еще один интересный пост в блоге Огняна Банкова, упомянутый как ответ на другой вопрос, который может быть полезен.


  • Вы всегда можете отправить коммит в AOSP, так как эта библиотека является его частью. Однако не уверен, что жестко закодированный путь будет принят. Если вы не хотите отправлять туда сообщения, вы можете создать свой собственный репозиторий с открытым исходным кодом на Github или что-то в этом роде. 22.05.2013
  • Просмотр рециркуляции тоже кажется рваным. Если только я не использую его неправильно. Заинтересовался бы и этим. 23.05.2013
  • @yarian, Volley не занимается переработкой представлений для вашего. В случае повторного использования представления вы должны отменить предыдущий запрос. ImageLoader.get возвращает ImageContainer, у которого есть метод cancelRequest. 23.05.2013
  • @AfzalivE Спасибо за эту информацию. Я обновил пост. 23.05.2013
  • @vmironov Если вы используете NetworkImageView, он должен справиться с этим за вас. По крайней мере, согласно разговору Google I/O. Посмотрите на 12:18. Он говорит о повторном использовании представлений, а затем говорит: «Или вы можете использовать NetworkImageView из набора инструментов, который сделает все за вас». 24.05.2013
  • У меня тоже работал NeworkImageView. 28.05.2013
  • Вы можете сообщать об ошибках и пожеланиях разработчику в запустить группу Google 06.06.2013
  • перейдите по этой ссылке — отличное руководство по изучению залпа. 08.08.2013

Ответы:


1

Кажется, в комментариях на многое ответили, но я постараюсь осветить все остальное, вернее, постараюсь осветить ваши конкретные вопросы.

1) Volley не обрабатывает перенаправление самостоятельно. Он обрабатывается базовым HttpStack. Например, в настоящее время я использую OkHttp (от Square) в качестве HTTP-клиента для Volley. См. https://plus.google.com/108284392618554783657/posts/eJJxhkTQ4yU https://gist.github.com/JakeWharton/5616899 OkHttp великолепен, так как он имеет отличные значения по умолчанию для обработки SPDY, перенаправлений и других удобств HTTP. Вы также можете использовать это для реализации собственных значений по умолчанию для платформы HttpUrlConnection (например, вызов followRedirects() для соединения перед передачей его в Volley --- https://developer.android.com/reference/java/net/HttpURLConnection.html#setFollowRedirects(boolean))

2) Я даже не уверен, что буду использовать getCacheDir() для кеша Volley. Согласно документам (https://developer.android.com/reference/android/content/Context.html#getCacheDir()), этот каталог кеша никогда не должен превышать 1 МБ. Принимая во внимание, что большинство клиентов, как правило, используют 10 МБ по умолчанию для HTTP-кеша (1 МБ действительно мало для HTTP-кеша!). Кроме того, почему вы используете такой каталог с глубоким кешем? Нет никаких причин, по которым «cacheDir1» должен иметь глубину нескольких каталогов. Просто сделайте его именем файла. getCacheDir() все равно вернет вашу собственную папку. Я бы рекомендовал делать это при инициализации Volley (обычно рекомендуется использовать класс Application):

File volleyCacheFile = new File(getExternalCacheDir(), "volleyCache.tmp");

Конечно, здесь отсутствует какая-либо обработка ошибок (что, если внешнее хранилище недоступно?). Также не забывайте, что вам нужно соответствующее разрешение для записи во внешнее хранилище.

Надеюсь, это поможет.

12.08.2013
  • Спасибо за эту информацию, которая прояснила для меня ситуацию. Я приму этот ответ, так как этот вопрос был скорее обсуждением, и ваш ответ каким-то образом касался оставшейся проблемы. Тем не менее, я хотел бы иметь лучшую документацию/производительность и примеры для залпа, особенно в отношении асинхронной загрузки/кэширования растровых изображений в сочетании с listViews, но давайте посмотрим, что принесет будущее. :) 19.08.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..