рд╡реЙрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдкрдиреЗ "рд╡реЙрд▓реА" рд╢рдмреНрдж рдЕрднреА рддрдХ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ, рдпрд╣ рдлрд╝рд┐рдХрд╕ рдХрд┐рд░реНрдХрдкреИрдЯреНрд░рд┐рдХ рджреНрд╡рд╛рд░рд╛ Google I / O 2013 рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред

рд╡реЙрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ?


рд╡реЙрд▓реА рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдиреЗрдЯрд╡рд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЖрд╕рд╛рди рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рддреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИред

рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦрдиреЗ / рдХреИрд╢ рд╕реЗ рдмрд╛рд░-рдмрд╛рд░ рдХреЛрдб рдкрдврд╝рдиреЗ рд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИред рдФрд░ рдПрдХ рдФрд░ рд▓рд╛рдн, рдХрдо рдХреЛрдб, рдХрдо рддреНрд░реБрдЯрд┐рдпрд╛рдБ :)

рдЖрдорддреМрд░ рдкрд░ рд╣рдо AsyncTask рдореЗрдВ рд╕рдорд╛рди рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╡реЗрдм рдПрдкреАрдЖрдИ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХред рд╣рдореЗрдВ OnSourceExecute () рдФрд░ OnPostExecute () рдХреЗ рдЕрдВрджрд░ ProgressBar / ProgressDialog рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдИ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдПрдХ рдХрд╛рдо рд╣реИред рдХрднреА-рдХрднреА рдпрд╣ рддрдм рднреА рдЙрдмрд╛рдК рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдПрдХ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЛ ProgressBar / ProgressDialog рдФрд░ рдХрдИ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдЕрдм рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЙрд▓реА, AsyncTask рдХрд╛ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡реЙрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдн:


  1. рд╡реЙрд▓реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡реЙрд▓реА рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд▓реЗрдВрдЧреЗред
  2. рд╡реЙрд▓реА рдкрд╛рд░рджрд░реНрд╢реА рдбрд┐рд╕реНрдХ рдХреИрд╢рд┐рдВрдЧ рдФрд░ рдЗрди-рдореЗрдореЛрд░реА рдХреИрд╢рд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  3. рд╡реЙрд▓реА рдЕрдиреБрд░реЛрдз рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрдк рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдз рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  4. рд╡реЙрд▓реА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрд░рд┐рд╡рд░реНрддрди рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  5. рд╡реЙрд▓реА рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдЯреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ?


  1. рд╡реЙрд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВред
    git clone https://android.googlesource.com/platform/frameworks/volley 
  2. рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдб рдЖрдпрд╛рдд рдХрд░реЗрдВ ред

рд╡реЙрд▓реА рдХреЗ 2 рдореБрдЦреНрдп рд╡рд░реНрдЧ


2 рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╣реИрдВ:
  1. рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░
  2. рдкреНрд░рд╛рд░реНрдердирд╛

рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░: рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдЬрд╣рд╛рдВ рдЪрд╛рд╣реЗрдВ рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░ рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдиреБрд░реЛрдз: рдЗрд╕рдореЗрдВ рд╡реЗрдм рдПрдкреАрдЖрдИ рдХреЙрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдХрд┐рд╕ рд╡рд┐рдзрд┐ (GET рдпрд╛ POST) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдбреЗрдЯрд╛, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реНрд░реЛрддрд╛, рддреНрд░реБрдЯрд┐ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред

JSONObjectRequest рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
  /** * Creates a new request. * @param method the HTTP method to use * @param url URL to fetch the JSON from * @param jsonRequest A {@link JSONObject} to post with the request. Null is allowed and * indicates no parameters will be posted along with request. * @param listener Listener to receive the JSON response * @param errorListener Error listener, or null to ignore errors. */ public JsonObjectRequest(int method, String url, JSONObject jsonRequest, Listener<JSONObject> listener, ErrorListener errorListener) { super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener, errorListener); } /** * Constructor which defaults to <code>GET</code> if <code>jsonRequest</code> is * <code>null</code>, <code>POST</code> otherwise. * * @see #JsonObjectRequest(int, String, JSONObject, Listener, ErrorListener) */ public JsonObjectRequest(String url, JSONObject jsonRequest, Listener<JSONObject> listener, ErrorListener errorListener) { this(jsonRequest == null ? Method.GET : Method.POST, url, jsonRequest, listener, errorListener); } 

рд╡реЙрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:


рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╡реЙрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреНрд▓реЛрди / рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдЕрдм JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред

рдЪрд░рдг 1: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рд╡реЙрд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЧреНрд░рд╣рдг рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВрдЧреЗред рдЕрдм рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп (рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ) рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ => рдЧреБрдг => рдПрдВрдбреНрд░реЙрдЗрдб (рдмрд╛рдПрдВ рдкреИрдирд▓)ред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЙрд▓реА

рдЪрд░рдг 2: рдПрдХ рдирдпрд╛ рд╡реЙрд▓реАрдПрдХреНрд╕рдкреНрд▓рд╛рдиреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБред

рдЪрд░рдг 3: VolleyExample рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡реЙрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред

рдЬрд┐рд╕рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡реЙрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ

рдЪрд░рдг 4: AndroidManifest.xml рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдЕрдиреБрдорддрд┐ рдЪрд╛рд▓реВ рдХрд░реЗрдВ

 <uses-permission android:name="android.permission.INTERNET"/> 

рдЪрд░рдг 5:
рел.рез рдХрдХреНрд╖рд╛ рдЕрдиреБрд░реЛрдз рдХреА рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдПрдБ

 RequestQueue queue = Volley.newRequestQueue(this); 

5.2 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рд╢реНрд░реЛрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ JSONObjectRequest рдмрдирд╛рдПрдБред

 String url = "https://www.googleapis.com/customsearch/v1?key=AIzaSyBmSXUzVZBKQv9FJkTpZXn0dObKgEQOIFU&cx=014099860786446192319:t5mr0xnusiy&q=AndroidDev&alt=json&searchType=image"; 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 } }); 


5.3 RequestQueue рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрд░реЛрдз рдЬреЛрдбрд╝реЗрдВред
 queue.add(jsObjRequest); 

рд╕рднреА MainActivity.java рдлрд╝рд╛рдЗрд▓ рдХреЛрдб
 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); String url = "https://www.googleapis.com/customsearch/v1?key=AIzaSyBmSXUzVZBKQv9FJkTpZXn0dObKgEQOIFU&cx=014099860786446192319:t5mr0xnusiy&q=AndroidDev&alt=json&searchType=image"; 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 sourcesent. getMenuInflater().inflate(R.menu.main, menu); return true; } } 

Source: https://habr.com/ru/post/In188860/


All Articles