gpt4 book ai didi

android - 在 Android 中加载大量短裤

转载 作者:行者123 更新时间:2023-11-29 18:22:21 25 4
gpt4 key购买 nike

假设我有一个长度为 1,000,000 的短裤数组,并且我需要在我的应用程序启动时和 Activity 线程超时之前将其生成或加载到 RAM 中(最好在几秒钟内)。

然后我可以在运行时快速访问它的条目。

  1. 您将如何从文件中将其加载到内存中?从txt文件加载?来自 SQLite 文件(在单个表中有两个整数列,一个用于索引,另一个用于值)?

  2. Activity 是否有可能在被视为超时之前请求更长的空闲时间?

最佳答案

您的问题的解决方案是生成一个线程来读取文件。这将是一个高级概述,因此您可以追踪相关项目。它将首先处理第 2 项,然后是第 1 项。

首先,您需要让长时间运行的处理脱离 UI 线程。 “空闲”时间响应问题(应用程序未响应)是因为您正在占用执行其他操作所需的 UI 线程。线程不能同时读取文件和绘制屏幕(至少不好)。

我发现最简单的方法是使用 Java ExecutorServices。您要做的是将读取文件或数据库的逻辑打包到 java Runnable 或 Callable 中,然后使用 ExecutorService 运行它。执行程序将负责启动线程并在不再使用这些资源时回收这些资源。

需要注意的一个关键问题是,一旦创建了另一个线程,更新 UI 时需要小心。因为 ui 对象不是线程安全的,您只能从 UI 线程更新 ui(常识,对吧?)。如果您在 Activity 中,您可以通过调用 runOnUiThread() 来执行此操作,或者您可以在 UI 线程首先调用的 ACtivity 方法之一中创建您自己的处理程序。

Sam Dufel 说:

Hmm... You could really pack that down if you could come with a format to replace all the dummy entries with just a count. Eg, 10,000 zeros get replaced by a pair of flag bytes followed by 10,000

此外,您可能会看到通过生成多个读取线程来提高速度。如果您可以将文件分成两个文件,允许两个线程同时执行,您会看到显着的加速(取决于您需要对数据执行的其他操作)。从文件加载数据的一种分而治之。粗略的谷歌搜索应该会为您提供有关如何从文件加载短裤的信息。根据您的规范,您绝对应该考虑使用二进制格式。

关于android - 在 Android 中加载大量短裤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4732170/

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