gpt4 book ai didi

android - 实例化核心 Volley 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:03:55 26 4
gpt4 key购买 nike

对于 Volley,我有点不确定的是 RequestQueue、ImageLoader 对象和 ImageLoader.ImageCache 实现。

在我遇到的示例中,它们是在 onCreate() 中实例化的,但为每个 Activity 创建一个新的请求队列似乎没有意义。我还有很多 Activity 和服务,我会在任何地方使用它。如果我真的必须在每个服务或 Activity 中实例化它们,它们的成本是多少?

生产应用使用什么最佳实践来实例化和访问这些对象?

最佳答案

我使用 Volley 的经验是,我会在 Application 类中启动一个 RequestQueue,将它传递给应用程序的全局上下文。我看不出这样做的缺点只是对 RequestQueue 进行静态引用:

public class MyApplication extends Application
{
private static RequestQueue mRequestQueue;

@Override
public void onCreate() {
super.onCreate();
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}

// Getter for RequestQueue or just make it public
}

在文档中,您可以为它引用的 Application 类:

Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created. Implementations should be as quick as possible (for example using lazy initialization of state) since the time spent in this function directly impacts the performance of starting the first activity, service, or receiver in a process. If you override this method, be sure to call super.onCreate().

因此可以安全地假设我们的 RequestQueue 可用于在 Service、Activity、Loader 等中发送请求。

现在,就 ImageLoader 而言,我将制作一个包装一些功能的单例类,这样您就只有一个 ImageCache 实例和一个 ImageLoader,例如。

public class ImageLoaderHelper
{
private static ImageLoaderHelper mInstance = null;

private final ImageLoader mImageLoader;
private final ImageCache mImageCache;

public static ImageLoaderHelper getInstance() {
if(mInstance == null)
mInstance = new ImageLoaderHelper();
return mInstance;
}

private ImageLoaderHelper() {
mImageCache = new MyCustomImageCache();
mImageLoader = new ImageLoader(MyApplication.getVolleyQueue(),mImageCache);
}

// Now you can do what ever you want with your ImageCache and ImageLoader
}

如果你想要一个非常好的 ImageLoading with volley 的例子,请查看 this示例项目它真的很有用。

希望这对您有所帮助。

关于android - 实例化核心 Volley 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17336434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com