Статьи

Android — пример библиотеки Volley

Я не уверен, слышали ли вы еще слово «залп», но это библиотека, в которой один эксперт выступил с речью в Google I / O 2013 Фикусом Киркпатриком .

Для чего нужна библиотека Volley?

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

Я имею в виду написание того же кода сетевого вызова AsyncTask и логику / код, который вы пишете для получения ответа из Web API и отображения его в определенном представлении. Мы должны позаботиться об отображении ProgressBar / ProgressDialog внутри onPreExecute () и onPostExecute (). Я знаю, что это не сложная задача, но все же скучно, иногда мне также становится скучно, хотя я определил класс BaseTask для управления операцией отображения / отклонения ProgressBar / ProgressDialog и многих других вещей. Так что теперь мы можем сказать, что Volley может быть мощной альтернативой AsyncTask.

Преимущества использования Volley:

  1. Залп автоматически планирует все сетевые запросы. Это означает, что Volley позаботится обо всех сетевых запросах, выполняемых вашим приложением для получения ответа или изображения из Интернета.
  2. Залп обеспечивает прозрачное кеширование дисков и памяти.
  3. Volley предоставляет мощный API запроса отмены. Это означает, что вы можете отменить один запрос или установить блоки или объемы запросов для отмены.
  4. Залп обеспечивает мощные возможности настройки.
  5. Volley предоставляет инструменты отладки и трассировки

С чего начать?

  1. Клонируй волейбольный проект
  2. Импортируйте код в ваш проект

Клонируем проект Volley:

git clone https://android.googlesource.com/platform/frameworks/volley

Создана папка «Волейбол». Теперь мы должны импортировать это в Eclipse или Android Studio. К вашему сведению, я использую Git GUI клиент на моей машине с Windows.

Теперь предположим, что если на вашем компьютере не установлен клиент Git и вы все еще хотите клонировать репозиторий, то Eclipse и ADT Bundle имеют возможность клонировать репозиторий и импортировать проект напрямую. См. Мою предыдущую статью для того же: Android — Импорт проектов из Git

2 основных класса волейбола:

Есть 2 основных класса:

  1. Очередь запросов
  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