实例化核心 Volley 对象

2023-11-27

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

在我遇到的示例中,它们在 onCreate() 中实例化,但为每个活动创建新的请求队列似乎没有意义。我还有大量的活动和服务,我将在任何地方使用它。如果我确实必须在每个服务或活动中实例化它们,那么它们的成本有多高?

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


我对 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 类:

在应用程序启动时、创建任何活动、服务或接收者对象(不包括内容提供者)之前调用。实现应该尽可能快(例如使用状态的延迟初始化),因为在此函数中花费的时间直接影响启动进程中第一个活动、服务或接收器的性能。如果您重写此方法,请务必调用 super.onCreate()。

因此,可以安全地假设我们的 RequestQueue 将可用于在服务、活动、加载器等中调度请求。

现在就 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 与 volley 示例,请查看this示例项目确实很有用。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实例化核心 Volley 对象 的相关文章

  • 在 Android 上将视频设置为壁纸

    我想知道如何将视频设置为壁纸 否则不可能 我可以将图像设置为壁纸 并且可以构建动态壁纸 但无法将视频设置为壁纸 所以有人知道我该怎么做吗 提前致谢 我认为唯一可以做到的方法是将其合并到 动态壁纸 中 缺点是正如其他人提到的那样 这会严重影响
  • 带身份验证的 MediaPlayer RTSP 视频流

    我能够在未经授权的情况下从网络摄像机流式传输视频 但现在我需要在授权的情况下执行此操作 我发现很少有信息表明 Android 不支持 RTSP 身份验证 但我发现另一条信息表明 通过使用该方法添加标头 可以在 API 级别 14 中实现身份
  • Android 测试 java.lang.NoClassDefFoundError 由于 Fest-Android 出现错误

    我目前正在我的项目中实现 Android 版 Fest 但我似乎遇到了依赖问题 如果我在不包含 Fest 库的情况下运行测试 测试将正常运行 一旦我添加了 Fest 库 测试就不再运行 相反 会抛出异常 我的项目使用以下依赖项 compil
  • Android异步服务调用策略

    这是场景 客户端对服务进行远程调用 返回 void 并提供 回调对象 服务在后台线程上执行一些长时间运行的逻辑 然后使用回调对象来触发以太成功或失败 因为这些操作视觉元素 执行 Activity runOnUiThread 块 该场景运行良
  • 收到“提供的 API 密钥已过期”。使用 Places API 时出错

    我已经从 Google 控制台为 Places API 密钥生成了服务器密钥 但每当我访问该服务时 我都会收到 提供的 API 密钥已过期 错误 我已尝试重新生成密钥 但仍然出现相同的错误 我遇到了同样的问题 但终于解决了 Google 地
  • Android:NotificationCompat.MediaStyle 操作按钮不执行任何操作

    我有一个简单的 Android 应用程序 其中包含一个Activity and a Service源自于MediaBrowserServiceCompat 我已成功将其设置为通过使用播放我的主要活动中的音频MediaBrowserCompa
  • Android物理引擎[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在研究了 3D 游戏编程之后 很快就明白了为什么物理引擎非常有用 Android 支持哪些物理引擎并且可以在 Android 上使用 关于
  • 获取包含位图支持的画布的 Android 视图上的点的像素颜色值

    我正在尝试找出获取给定点上像素颜色值的最佳方法View http developer android com reference android view View html 我可以通过三种方式写入视图 我设置了背景图像View setBa
  • 如何修复运行 Android 模拟器时出现 GPU Driver Issue 错误

    我的 Android 模拟器几周前运行良好 但现在出现错误 当我运行代码时 GPU 驱动程序问题错误对话框与模拟器一起弹出 当我单击 确定 时 Android 模拟器不会按预期运行应用程序 错误如下 Your GPU driver info
  • 如何编写 adb jdwp + adbforward 脚本?

    我正在尝试使用命令行和脚本工具调试 Android 应用程序 我已经受够了 Android Studio 占用我的 CPU 要连接到我的应用程序 我需要adb jdwp获取 pid 然后adb forward tcp 8700 jdwp
  • 如何将您的终端与 Android 模拟器连接

    我尝试导航到 android 工具文件夹并输入 adb shell 命令 但它似乎不起作用 我的终端似乎只能识别命令的 adb 部分 并给我一条错误消息 我究竟做错了什么 通过键入列出所有连接的设备adb devices 检查是否列出了任何
  • 通过覆盖滑动调整图像大小不会调整图像大小

    我在用着Glide下载并显示图像 但是 当我尝试调整图像大小时 它不会这样做 我得到随机大小 或者可能是图像的实际大小 这是我用于通过 Glide 加载的代码 Glide with context load file getUrl asBi
  • 错误:类 kotlin.reflect.jvm.internal.FunctionCaller$FieldSetter

    我已尝试一切方法来消除此错误 但它不断出现 Class kotlin reflect jvm internal FunctionCaller FieldSetter can not access a member of class com
  • android device.getUuids 返回 null

    我正在尝试使用低功耗蓝牙 BLE 通过 Android 应用程序连接到 Arduino Uno 我正在 Android Studio 上进行开发 使用 Samsung Galaxy S4 和 Android 版本 5 0 1 进行测试我点击
  • 无法在 Android Studio 中运行项目

    当我尝试在 Android Studio 中运行我的项目时 我收到以下错误消息 Execution failed for task CricHQ dexDebug gt com android ide common internal Log
  • 可下载字体例外

    我决定使用可下载字体 https developer android com guide topics ui look and feel downloadable fonts html在我的项目中 IS 按照指南中的建议实施了所有内容 当我
  • 使用磁场计算旋转矩阵

    在获取旋转矩阵值时它包含public static boolean getRotationMatrix float R float I float gravity float geomagnetic 这里我如何计算float gravity
  • 如何在没有 OpenCv Manager 的情况下运行 OpenCV 代码

    我正在使用 OpenCV4Android 版本 2 4 10 并在 Samsung Galayx GT I9300 上测试我的代码 我遇到的问题是 我必须从 Play 商店下载 Opencv Manager 以便我的 opencv 代码运行
  • 如何在 Android 应用程序退出之前进行一些清理?

    当我的 Android 应用程序终止时 是否有某种 onTerminate 方法可以进行一些清理 我想清除一些 SharedPreferences 我有一个活动 它保持几个数字的运行平均值 并将其存储在 SharedPreference 中
  • 找不到与给定名称“@style/Theme.AppCompat.Light”匹配的资源

    我已经研究这个问题几个小时了 从 github 下载存储库后 任何 xml 文件中的唯一错误是 No resource found that matches the given name style Theme AppCompat Ligh

随机推荐

  • addActionListener 有什么作用?

    我有以下代码 JButton button new JButton Clear button addActionListener this 据我了解 我创建了一个按钮 上面写着 清除 然后我必须将一个动作与这个按钮关联起来 如果按下按钮会发
  • Python gc.get_count() 返回的 count0、count1 和 count2 值是什么

    python gc 包的文档对 gc get count 做了这样的描述 gc get count Return the current collection counts as a tuple of count0 count1 count
  • 在 Javascript 中使用引号和 innerHTML

    我编写了一些代码来让玩家了解故事的进展 当玩家单击按钮时 他们会看到一些新文本和更多选项 到目前为止一切顺利 但是当我传递带有附加参数的函数调用时 我需要单引号和双引号 但是 如果我同时使用两者 则会破坏innerHTML 代码如下 如果需
  • 如何获取JButton默认背景颜色?

    我用这个myButton setBackground myColor 改变JButton背景颜色为我的颜色 如何找到它原来的默认背景颜色 以便我可以将其更改回来 我知道我可以在更改和使用它之前保存它的默认背景颜色 但我想知道 Java 是否
  • 如何从 Json.NET 获取密钥列表?

    我正在使用 C 和 Json NET 如果我有一个 JObject 我想要对象内的键列表 类似于object Keys 返回对象内的键 这似乎是显而易见的 但我很难找到一种方法来做到这一点 Edit 我正在遍历该对象 并且我想在遍历时吐出对
  • 通过 Net:SSH 出现“非绝对主页”错误

    有问题的代码 Net SSH start server name user 这返回 非绝对家 用户 实际上有一个主目录 一种建议的方法是使用 IdentityFile 的完整路径修改 ssh config 这并没有解决问题 最疯狂的部分是
  • MATLAB:强制 doc 命令打开指定的参考 HTML 页面

    假设我在包中编写了一个类 名为mypackage myclass 我已经为包和类编写了自己的 HTML 文档 并将其包含在 MATLAB 帮助浏览器中 如下所述MATLAB 文档 我可以通过使用帮助浏览器直接导航到该 HTML 文档来显示该
  • 如何使用 Javascript 而不是 jQuery 用 JSON 数据动态填充 html 元素?

    我有以下 JSON 数据片段 items title sample 1 author author 1 title sample 2 author author 2 如何使用此数据填充以下 html 元素 div class news st
  • 在 iOS 中以编程方式将 SQLite 数据导出到 Excel

    在我的应用程序中 我使用 sqlite 作为后端 在本地存储数据 我能够将数据插入到我的表中 但是我想要做的是 想要以编程方式将所有 sqlite 数据导入到 excel 中 而且我不想为此应用程序使用服务器 一旦生成 excel 工作表
  • 检测 HiDPI Windows Phone 8 设备

    如何检测运行 Windows Phone 8 的 HiDPI 设备 我测试的手机是诺基亚 Lumia 920 它具有 4 5 英寸 1280 768 屏幕 即 gt 300 dpi IE支持min resolution在 CSS 中但不是m
  • 数组连接功能不起作用

    由于某种原因 我无法理解为什么我的数组连接方法不起作用 这是供审查的快速代码 function rot13 str LBH QVQ VG var strAry str split var transformed strAry map fun
  • Centos 5.5 上的 RabbitMQ 安装问题

    我一直在尝试让rabbitmq server 2 4 0在Centos上启动并运行 5 5 在 Amazon AWS 实例上 我的实例使用以下内核 2 6 18 xenU ec2 v1 2 我尝试使用以下方法安装 erlang 和rabbi
  • 动态禁用联系表单 7 字段验证

    在我的联系表单 7 中 我有两个单选按钮 它们根据用户所做的选择显示和隐藏联系表单中的字段 当您单击 电话 单选按钮时 脚本 JS 而非 jQuery 将确保隐藏电子邮件字段并仅显示电话字段 当您单击电子邮件单选按钮时 将显示电子邮件字段并
  • 在 XCode 中编译 IOS 应用程序时出现错误“文件未找到:-fobjc-arc”

    添加 OCMock 框架后 我收到了那个奇怪的错误 ld file not found fobjc arc clang error linker command failed with exit code 1 use v to see in
  • 运行包中的所有测试时出现 JUnit java.lang.OutOfMemoryError

    当加载包中的所有单元测试时 make 任务会抛出 java lang OutOfMemoryError Java 堆空间错误 不过 如果我运行每个子包中的所有测试 所有测试都会加载并完成 只有当我尝试运行父包中的所有测试时 才会出现 OOM
  • 是否可以使用 GSON 将带有句点的 JSON 属性名称反序列化为嵌套对象?

    这是我尝试使用 GSON 使用的 JSON 类型的示例 person name Philip father name Yancy 我想知道是否可以将此 JSON 反序列化为以下结构 public class Person private S
  • JavaScript 中以 20(或 X)为步长舍入?

    我的数字从 50 开始到 190 结束 步数始终为 20 gt 50 70 90 190 现在我从文本文件中得到一个数字 该数字必须根据此进行四舍五入 因此 如果我得到 55 它应该变成 70 如果我得到 77 它应该是 90 如果我得到
  • 无法从 iOS 7 中的 App Store 收据获取original_application_version

    我正在尝试为当前客户实现从付费模式到免费增值模式的无缝过渡 但在从收据中获取original application version 时遇到问题 我的应用程序仅适用于 iOS 7 您可能知道 Apple 在 iOS 7 中引入了统一收据 如
  • 现有 Angular 4 项目中的 Ionic 框架

    我正在使用自己的 CSS 进行 Angular 项目 现在几乎已经完成了 我想在我的项目中使用带有 cordova 的 ionic 框架 我尝试过 但它不起作用 有没有什么方法和分步过程可以在我现有的 Angular 4 项目中添加离子框架
  • 实例化核心 Volley 对象

    我对 Volley 有点不确定的是 RequestQueue ImageLoader 对象和 ImageLoader ImageCache 实现 在我遇到的示例中 它们在 onCreate 中实例化 但为每个活动创建新的请求队列似乎没有意义