其他分享
首页 > 其他分享> > 我应该使用什么来在Android上使用Volley预加载数据?

我应该使用什么来在Android上使用Volley预加载数据?

作者:互联网

我有一些数据存储在数据库中.在这种情况下,应用程序的用户.

我想检索他们的所有信息并放置我的应用程序的布局,所以我需要在我的布局类的onCreate函数中检索数据,以便在更改为该布局时在其上显示.

我知道AsyncTask和Volley要对我的API做异步请求,但是大多数时候不会在布局上显示整个用户,因为在渲染布局时还没有检索到它们.

我也进行了搜索,似乎有一些方法(有时似乎是变通方法)使AsyncTask和Volley同步,但是它们阻止了UIThread.

我知道异步和同步请求的区别以及第二个阻止应用程序的原因,所以我有一些问题.

>始终建议使用异步请求吗?
>如果同步请求不正确,那么在需要从数据库中检索的数据将在呈现布局的同时显示的情况下使用了什么?
>如果我希望这些数据在整个布局类中可用,我该如何处理?我需要在渲染布局时在屏幕上显示数据,但我也想用它制作一些东西,所以如果我尝试在任何地方使用它,在Volley请求的onResponse方法中我总是得到null.作为数据“预加载”的东西.

提前致谢!

解决方法:

最后,我注意到我的问题是关于概念的,因为我认为你无法使用从Volley请求的onResponse方法中检索到的数据.

最后我做的是在Fragment上创建一个全局变量,并在完全检索时将数据分配给该变量.让我们说我有一个我想要检索的字符串.

然后我创建全局变量(在片段的顶部):

String string = "";

我创建了一个函数,为这个全局变量赋一个参数:

public void setString(String string){
    this.string = string;
}

为了结束,在我检索字符串后,我在onResponse方法上调用该函数:

StringRequest jsonArrayRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        try {
           //Do stuff to retrieve the String
           setString(response); //Assign the string "response" to the global variable via the method.
        } catch (JSONException e) {
              e.printStackTrace();
        }
    }
}, new Response.ErrorListener() {
    @Override
    public void one rrorResponse(VolleyError error) {
         Log.e("LOG", error.toString());
    }
});

如果你需要对这些数据做一些事情,你应该等到数据被完全检索,这样你就可以在此期间显示一个对话框.

我不知道是否有更好的方法可以做到这一点,或者这是一个不好的做法,但这是我自己找到的最简单的方法.

标签:android,asynchronous,android-asynctask,synchronous,android-volley
来源: https://codeday.me/bug/20190608/1197654.html