Я не уверен, слышали ли вы еще слово «залп», но это библиотека, в которой один эксперт выступил с речью в Google I / O 2013 Фикусом Киркпатриком .
Для чего нужна библиотека Volley?
Volley — это библиотека, которая делает работу в сети для приложений Android проще, а главное, быстрее. Он управляет обработкой и кэшированием сетевых запросов и экономит ценное время разработчиков от повторного написания одного и того же кода сетевого вызова / кэша. И еще одно преимущество, заключающееся в меньшем количестве кода, — это меньшее количество ошибок, и это все, что разработчики хотят и к чему стремятся.
Я имею в виду написание того же кода сетевого вызова AsyncTask и логику / код, который вы пишете для получения ответа из Web API и отображения его в определенном представлении. Мы должны позаботиться об отображении ProgressBar / ProgressDialog внутри onPreExecute () и onPostExecute (). Я знаю, что это не сложная задача, но все же скучно, иногда мне также становится скучно, хотя я определил класс BaseTask для управления операцией отображения / отклонения ProgressBar / ProgressDialog и многих других вещей. Так что теперь мы можем сказать, что Volley может быть мощной альтернативой AsyncTask.
Преимущества использования Volley:
- Залп автоматически планирует все сетевые запросы. Это означает, что Volley позаботится обо всех сетевых запросах, выполняемых вашим приложением для получения ответа или изображения из Интернета.
- Залп обеспечивает прозрачное кеширование дисков и памяти.
- Volley предоставляет мощный API запроса отмены. Это означает, что вы можете отменить один запрос или установить блоки или объемы запросов для отмены.
- Залп обеспечивает мощные возможности настройки.
- Volley предоставляет инструменты отладки и трассировки
С чего начать?
- Клонируй волейбольный проект
- Импортируйте код в ваш проект
Клонируем проект Volley:
git clone https://android.googlesource.com/platform/frameworks/volley
Создана папка «Волейбол». Теперь мы должны импортировать это в Eclipse или Android Studio. К вашему сведению, я использую Git GUI клиент на моей машине с Windows.
Теперь предположим, что если на вашем компьютере не установлен клиент Git и вы все еще хотите клонировать репозиторий, то Eclipse и ADT Bundle имеют возможность клонировать репозиторий и импортировать проект напрямую. См. Мою предыдущую статью для того же: Android — Импорт проектов из Git
2 основных класса волейбола:
Есть 2 основных класса:
- Очередь запросов
- Запрос
Очередь запросов: это интерес, который вы используете для отправки запросов в сеть, вы можете создать очередь запросов по требованию, если хотите, но обычно вместо этого вы создадите ее на раннем этапе, во время запуска, сохраните ее и используйте это как синглтон.
Запрос: содержит все необходимые данные для вызова веб-API. Например: какой метод использовать (GET или POST), запрос данных для передачи, прослушиватель ответа, прослушиватель ошибок.
Взгляните на метод запроса JSONObjectRequest:
Базовый пример использования залпа:
Я предполагаю, что вы уже клонировали / загрузили библиотеку Volley из git repo. Теперь следуйте инструкциям, чтобы создать простой пример получения твитов и отобразить его в ListView.
Шаг 1: Убедитесь, что вы импортировали проекты Volley в Eclipse, если нет, то импортируйте их. Теперь после импорта нам нужно сделать его проектом библиотеки , щелкнув правой кнопкой мыши => Свойства => Android (левая панель).
Шаг 2: Теперь создайте новый проект с именем VolleyExample .
Шаг 3: Щелкните правой кнопкой мыши по VolleyExample и включите Volley Library в наш проект.
Шаг 4. Включите разрешение ИНТЕРНЕТ в файле AndroidManifest.xml.
1
|
< uses-permission android:name = "android.permission.INTERNET" /> |
Шаг 5:
i) Создать объект класса RequestQueue.
1
|
RequestQueue queue = Volley.newRequestQueue( this ); |
ii) Создайте JSONObjectRequest с прослушивателем ответа и ошибки.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null , new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // TODO Auto-generated method stub txtDisplay.setText( "Response => " +response.toString()); findViewById(R.id.progressBar1).setVisibility(View.GONE); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub } }); |
iii) Добавьте ваш запрос в RequestQueue.
1
|
queue.add(jsObjRequest); |
Полный код файла MainActivity.java:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
package com.technotalkative.volleyexamplesimple; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.TextView; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.Volley; public class MainActivity extends Activity { private TextView txtDisplay; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtDisplay = (TextView) findViewById(R.id.txtDisplay); RequestQueue queue = Volley.newRequestQueue( this ); JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null , new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // TODO Auto-generated method stub txtDisplay.setText( "Response => " +response.toString()); findViewById(R.id.progressBar1).setVisibility(View.GONE); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub } }); queue.add(jsObjRequest); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true ; } } |
Загрузите библиотеку Volley и пример примера: https://github.com/PareshMayani/Android-Volley-Example
Видео, если вы пропустили сеанс: Google I / O 2013 — Volley: простая, быстрая сеть для Android