Android:应用启动时的初始请求

时间:2017-03-09 14:16:35

标签: android android-activity

我的Android应用程序需要在应用程序启动时执行初始http请求以从RESTful服务获取配置json文件。此请求由Volley完成 应用程序获取数据后,MainActivity就会启动。我还定义了一些深层链接,在我的应用程序中使用给定的URI打开WebView。 Deeplink必须由SplashActivity处理,因为配置需要首先由Volley加载。我不知道这是否是处理这个问题的正确方法。 也许在Application类中请求配置是一个选项,以便配置始终可用,无论哪个Activity首先启动?

2 个答案:

答案 0 :(得分:1)

这是正确的方法。 在您的Splash活动中,您应该使用深层链接处理传入的意图,启动您的Volley请求,然后您应继续使用您的逻辑。

同时,BTW,你应该向用户展示一些加载器/进度并当然处理失败。

答案 1 :(得分: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");
}
相关问题