2015-05-07 7 views
0

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

Так я построить это:

import java.util.Map; 
import org.json.JSONObject; 
import com.android.volley.DefaultRetryPolicy; 
import com.android.volley.Request.Method; 
import com.android.volley.Request.Priority; 
import com.android.volley.Response.ErrorListener; 
import com.android.volley.Response.Listener; 
import com.android.volley.VolleyError; 
import com.android.volley.VolleyLog; 

public class RequestResp { 
    private final static String WEB_SERVICE_URL = "http://blabla/api"; 
    private final Priority priorityImmediatelly = Priority.IMMEDIATE; 
    private final Priority priorityHigh = Priority.HIGH; 
    private final Priority priorityNORMAL = Priority.NORMAL; 
    private String tag_req_default = "tag_req_default"; 
    VolleyCustomRequest mVolleyCustomReq; 
    DefaultRetryPolicy drp = new DefaultRetryPolicy(15000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); 

    public /*JSONObject*/ void sendParamsAsHighPriority(Map<String, String> params) { 

     mVolleyCustomReq = new VolleyCustomRequest(Method.POST, 
       WEB_SERVICE_URL, params, new Listener<JSONObject>() { 

        @Override 
        public void onResponse(JSONObject response) { 
         if (response != null) { 
         } 
        } 
       }, new ErrorListener() { 

        @Override 
        public void onErrorResponse(VolleyError error) { 
         VolleyLog.d(tag_req_default, error.getMessage()); 
        } 
       }) { 

      @Override 
      public Priority getPriority() { 
       return priorityHigh; 
      } 

     }; 
     mVolleyCustomReq.setRetryPolicy(drp); 
     VolleyController.getInstance().addToRequestQueue(mVolleyCustomReq, 
       tag_req_default); 
/*return response; ?!?!?*/ 
    } 
} 

Но как вернуть ответ ?! Причина, если сервер был занят или вниз, или что-то, что делает ответ немного запоздалым, разработчики в своих приложениях получают нуль! (Я думаю).

Как это сделать ?! Создайте библиотеку jar, которая имеет класс, который имеет метод, который дает параметры и отправляет его по определенному URL-адресу, с библиотекой волейбола?

ответ

1

Определение интерфейса как

public interface OntaskCompleted { 

    public void onSuccess(JSONObject response); 
    public void onError(String message); 
} 

Теперь Ваша деятельность должна реализовывать этот интерфейс, и вы должны переопределить эту методу.

Теперь у вас класс Volley.

if (response != null) { 
ontaskCompleted.onSuccess(JSONObject); 
         } 

и

public void onErrorResponse(VolleyError error) { 
         VolleyLog.d(tag_req_default, error.getMessage()); 
         ontaskCompleted.onError(error.getMessage()); 
               } 

Теперь ваша деятельность будет получить результат ошибки или успеха. Надеюсь, он вам поможет.

+0

Если разработчики (используйте мою банку в своих приложениях) вызовите метод sendParamsAsHighPriority дважды, ответ в onSuccess - это для какого и разработчика, как это знать ?! –

+1

Если вы запускаете его асинхронно. Тогда это будет похоже на first-first first.It означает, что первым ответом будет ответ первого вызова api. – Soham

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