2017-03-09 81 views
0

我的Android應用程序需要在應用程序啓動時執行初始http請求,以從RESTful服務中獲取配置json文件。此請求由Volley 完成,只要應用程序獲取數據,MainActivity便會啓動。我還定義了一些深層鏈接,使用給定的URI在我的應用程序中打開WebView。深度鏈接必須由SplashActivity處理,因爲配置需要首先由Volley加載。我不知道這是否是正確的處理方法。 也許這將是一個選項來請求應用程序類中的配置,以便配置始終可用,無論哪個Activity首先啓動?Android:應用程序啓動的初始請求

+0

從Application Class請求配置是一個更好的選擇。 –

+0

你能解釋一下,如何處理異步請求?只有在請求完成時,MainActivity纔會出現。 – Ikno0wit

+0

已添加答案...可能有幫助。 –

回答

1

這是正確的方法。 在您的Splash活動中,您應該使用您的深層鏈接處理傳入的意圖,啓動您的Volley請求,然後才能繼續使用您的邏輯。

順便說一句,同時,你應該向用戶顯示一些加載/進度和處理失敗的過程。

1

如果您在Application類中進行異步調用,則可以使用回調進行請求並顯示所需的活動。

public interface ConfigListener { 
    public void onConfigReceived(List<ofSomething> list, boolean error, String message); 
} 

private void requestConfig(){ 
     final DownloadUsingVolley downloader = new DownloadUsingVolley(getActivity()); 
     downloader.retrieveData(new ConfigListener() { 
      @Override 
      public void onConfigReceived(List<ofSomething> list, boolean error, String message) { 
       //Show your required activity here 
      } 
     }); 
} 

private void retrieveData(String url, final ConfigListener configListener){ 
    final JsonObjectRequest request = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>(){ 
     @Override 
     public void onResponse(JSONObject response) { 
      try { 
       //parse 
       configListener.onConfigReceived(result,false,null); 
      }catch (JSONException e){ 
       configListener.onConfigReceived(0,true,e.getMessage()); 
      } 
     } 
    },new Response.ErrorListener(){ 
     @Override 
     public void onErrorResponse(VolleyError volleyError) { 
      configListener.onConfigReceived(0,true,volleyError.getMessage()); 
     } 
    }); 
    //adding request into the queue 
    ApplicationClass.getInstance().addToRequestQueue(request,"aTag"); 
} 
相關問題