使用 Android Application 类来保存数据

2024-03-25

我正在开发一个相当复杂的 Android 应用程序,该应用程序需要大量有关该应用程序的数据(我想说总共大约 500KB - 对于移动设备来说这个数据大吗?)。据我所知,应用程序中(更准确地说是活动中)的任何方向变化都会导致活动的完全破坏和重新创建。根据我的发现,Application 类没有相同的生命周期(即,出于所有意图和目的,它总是被实例化)。将状态信息存储在应用程序类内部然后从 Activity 引用它是否有意义,或者由于移动设备上的内存限制,这通常不是“可接受的”方法?我真的很感谢有关这个主题的任何建议。谢谢!


我认为 500kb 没什么大不了的。

您所描述的正是我解决活动中丢失数据问题的方法。我在 Application 类中创建了一个全局单例,并且能够从我使用的活动中访问它。

如果要经常使用数据,您可以在全局单例中传递数据。

public class YourApplication extends Application 
{     
     public SomeDataClass data = new SomeDataClass();
}

然后通过以下方式在任何活动中调用它:

YourApplication appState = ((YourApplication)this.getApplication());
appState.data.UseAGetterOrSetterHere(); // Do whatever you need to with the data here.

我讨论一下在我的博客文章中 https://web.archive.org/web/20130818035631/http://www.bryandenny.com/index.php/2010/05/25/what-i-learned-from-writing-my-first-android-application,在“全局单例”部分下。

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

使用 Android Application 类来保存数据 的相关文章

  • Android USB_DEVICE_ATTACHED 持久权限

    如何让 Android 在每次重新连接 USB 设备时都不再请求权限 我想让它记住 USB 设备的 默认使用 复选标记 这样我就不必每次都向同一设备授予权限 我以编程方式检测 USB 设备 Android 手机 何时连接到我的主机设备 An
  • 如何在GreenDao中实现表继承

    我一直在尝试创建一个数据库 其中所有表都继承某个元素 以便有可能拥有元数据 我在模型生成器的所有表声明中添加了这一行 public Entity addSuperEntity Schema schema Entity superEntity
  • 如何在 Android 中使用 KSoap 2

    我刚刚发现 ksoap2 在 Android 应用程序中使用我自己的 asp net Web 服务 我在互联网上发现了一些很棒的资源 并且我已经在 Android 应用程序中实现了我的网络服务 以下是我使用的网络服务的响应 HTTP 1 1
  • 当通过音频采样的数据数量超过 AudioRecord 构造函数中设置的“bufferSizeInBytes”时会发生什么?

    public AudioRecord int audioSource int sampleRateInHz int channelConfig int audioFormat int bufferSizeInBytes 这是公共构造函数Au
  • 如何从 BroadcastReceiver 刷新 ListView?

    如果我打电话notifyDataSetChanged 在与我的 ListView 关联的自定义适配器上 所有视图都应该自行刷新 getView 将被调用 现在我有一个正在监听事件的 BroadcastReceiver 当事件触发时 List
  • 用于监听拖动手势的后台应用程序

    我需要注册一个广播接收器 它会告诉我任何类型的信息Drag整个系统的事件 我的应用程序将在后台运行并执行任何任务 如果有 Drag即使任何其他应用程序在前台运行 事件也会发生 是否可以 知道我该怎么做吗 Updates 不要以为我会制作键盘
  • 如何生成带logo的二维码?

    我正在为 Android 设备开发应用程序 我想生成带有徽标的二维码 With ZXing I know how to generate simple QR codes like this one But I want to generat
  • Android 应用程序 Azure 依赖项 gradle 构建时出错

    我在 Android Studio 2 3 3 的 Gradle 同步中收到以下错误 错误 模块 com microsoft azure azure mobile android 3 3 0 依赖于一个或多个 Android 库 但它是一个
  • 仅在 MarshMallow(6.0 和 6.0.1)上使用 MapActivity 进行 MapView 会使应用程序崩溃

    我正在使用 MapActivity 扩展我的活动 以动态实现 MapView 其中包含显示 mapView 的片段 public abstract class BaseHomeActivity extends MapActivity 我已经
  • Android 自定义对话框中的图标

    有没有一种方法可以在不使用 AlertDialog 方法的情况下在自定义对话框上设置图标 对话框有标题 但缺少漂亮的分隔线和设置图标的功能 但肯定有一种方法可以在不使用 AlertDialog 的情况下获得两者 您可以使用以下代码添加图标
  • NotificationCompat.Builder 不接受第二个参数

    由于某种原因我的NotificationCompat Builder不会接受第二个参数 我不知道如何解决它 我看到了一些其他答案 但主要问题出在 gradle 版本中 但我的答案是最新的 如下所示 if Build VERSION SDK
  • DrawerLayout 第一次打开有点步骤

    我有一个 DrawerLayout 当我第一次滑动它时 它是逐步出现的 比如滞后或类似的东西 但之后它移动得很好 我不知道要发布什么代码 因为正如我所说 它工作正常 只是第一次打开它时 它打开不顺利 这是我的布局
  • Android searchView下拉菜单屏幕宽度

    情况 我的 appcompat 工具栏中有一个 searchview 小部件 允许通过 sqlitedatabase 提供自定义建议 Problem 我无法将下拉建议列表扩展到屏幕的整个宽度 最好的情况下 列表宽度几乎是屏幕的宽度 除了左侧
  • com.google.android.gms.games.GamesClient 无法解析

    我正在尝试使用 google play 游戏服务开发实时多人游戏 并下载了示例 ButtonClicker2000 但 Eclipse ADK 一直抱怨 com google android gms games GamesClient 无法
  • Android 是否可以获取用户和设备所在国家/地区的货币代码?

    是否可以获取用户和设备所在国家 地区的货币代码 我想将用户当前国家 地区的国家 地区代码设置为默认国家 地区 我们在 Android 中有解决方案吗 由于这段代码可能对您有帮助 public class CurrencyTest publi
  • android应用程序在模拟器上运行但在手机上运行

    我有我开发的这个应用程序 它在模拟器上运行得很好 没有任何错误 但当我尝试在手机上运行相同的代码进行测试时 应用程序崩溃并提示 filenotfoundexception 它说文件 res drawable divider horizo n
  • android:如何显示TableLayout的边框

    我如何突出显示表格布局的边框 在使用以形状为背景的圆形 shape xml 时 必须有某种方法可以为您的表格布局提供边框 圆形 xml
  • 在 Android 应用程序中编辑/添加 IPTC 元数据

    我看过许多其他类似的问题 但似乎没有一个有准确的答案 我正在开发一个可处理大量图像的 Android 应用程序 我希望通过编辑 IPTC 关键字标签 或其他适当标签 的值来向图像添加信息 我在用元数据提取器 http drewnoakes
  • Android 2.3 或更低版本上通知中的可点击自定义视图

    我创建了一个自定义通知布局 其中有一个可单击的按钮 到目前为止 在 Android 3 API 级别 11 或更高版本上可以正常工作 但在 Android 2 3 即ContentIntent来自Notification总是覆盖我的布局并且
  • 需要在 Android 应用程序卸载期间执行一些活动

    我正在开发一个应用程序 如果用户卸载该应用程序 我需要登录该应用程序 所以我正在遵循这种方法应用程序如何检测到它将被卸载 https stackoverflow com questions 18692571 how it works war

随机推荐

  • 从 MySQL 中选择随机行(有概率)

    我有一个 MySQL 表 其中有一行名为 cur odds 它是一个百分比数字 表示该行被选中的百分比概率 例如 当您运行 100 个查询时 如何进行查询以大约该频率实际选择行 我尝试了以下操作 但概率为 0 35 的行最终在大约 60 7
  • 在 cordova/on android 应用程序中,使用 https 的请求失败,但使用 http 的相同请求成功

    我有一个可以通过两个端口访问的后端服务器 一个使用 HTTP 另一个使用 HTTPS 它使用自签名证书 从我的 ionic cordova 混合应用程序中 当我使用 HTTP 请求运行时 它们都成功了 在第一次请求期间 我还添加了基本授权
  • jquery mobile在手机间隙中实现方向改变事件

    有人可以让我知道手机间隙中 jquery mobile 方向改变事件的正确代码吗 我在哪里以及如何实现这个orientationChange函数 window bind orientationchange orientationHandle
  • Python Selenium(等待帧、元素查找)

    我有这些包括 from selenium import webdriver from selenium common exceptions import NoSuchElementException from selenium webdri
  • Python-替换 CSV 文件中的行值

    我有这个数据集 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 基本上我想在每次运行程序后将第二
  • Rails 3.0.9 + Devise + Cucumber + Capybara 臭名昭著的“没有路线匹配 /users/sign_out”

    我正在使用 devise 1 4 2 和 Rails 3 0 9 cucumber rails 1 0 2 capybara 1 0 0 我有No route matches users sign out 当我点击注销时出现错误 我添加了
  • 为什么 git stash pop 说它无法从存储条目恢复未跟踪的文件?

    我有很多分阶段和未分阶段的更改 我想快速切换到另一个分支 然后再切换回来 所以我使用以下方法进行了更改 git stash push a 事后看来我可能可以使用 include untracked代替 all 然后 当我去弹出存储时 我收到
  • 子表单根据主表单的ID新建记录

    首先我想说 我是 Access 的初学者 我将感谢我能得到的每一点帮助 我创建了一个表单 显示一个带有三个子表单的表中的记录 记录和子表单具有一对多的关系 我现在正在为每个子表单创建按钮 以便在子表单中创建新记录 我已成功制作按钮并使用宏生
  • 为什么在函数堆栈上返回值不安全

    我在阅读 bruce eckel 时遇到了以下段落 他试图解释为什么函数在堆栈上返回值不安全 现在想象一下如果一个普通函数尝试在堆栈上返回值会发生什么您不能触及返回地址上方堆栈的任何部分 因此该函数必须将值推入返回地址下方 但是当执行汇编语
  • EF核心中的持久数据层,动态EF。将 EF 与模型分开

    我想将 EF 层与我的模型分开 我需要一个 EF Builder 将我的模型发送给它 如下所示 我找到了 mongodb 的代码 但我需要 EF core builder AddMongo builder AddMongoRepositor
  • awk 或 sed CSV 文件操作

    a004 1b North at006754 a004 1c south atytgh0 a004 1d east atrthh a010 1a midwest atyu a010 1b south rfg67 我想打印第一列和第二列 没有
  • 使用 grunt 构建的 Angular 应用程序中缺少资产

    我使用 Yeoman 和 AngularJS 以及所有与之相关的东西 如 Grunt 和 Bower 构建了一个应用程序 当使用本地运行时 一切都完美运行grunt serve 然而 在运行 grunt 并部署应用程序后 有一些丢失的资产
  • 嵌入式 MongoDB 文档在使用 C# 驱动程序保存时未获取 ID

    当我有一个包含文档列表的根文档并且我保存 插入时 根文档总是从 MongoDB 获取 ID 但列表中的文档不会 它们与ObjectId Empty 我不确定我是否做错了什么或者这是否是有意的行为 这是我正在尝试做的事情的一个例子 鉴于课程
  • TSQL 使触发器静默失败

    我在插入后触发器中有一些代码可能会失败 这样的失败并不重要 应该not回滚事务 如何捕获触发器内的错误并让事务的其余部分正常执行 下面的例子说明了我的意思 触发器故意创建一个错误条件 结果是原始插入 1 永远不会插入到表中 Try Catc
  • Bundler 抛出没有这样的文件或目录进行 gem 安装

    在 Gemfile 中 gem backup git gt git github com tenmiles backup git ref gt develop n 本地和分阶段 bundle install确实成功完成了 在生产中 当bun
  • Swift 3:如何捏合缩放和旋转 UIImageView?

    我真的很难在网上找到教程以及已经回答的问题 我已经尝试过它们 但它们似乎不起作用 我的视图中心有一个 UIImageView 我目前可以点击并将其拖动到屏幕上任何我想要的位置 我希望能够通过捏合来缩放和旋转此视图 我该如何实现这一目标 我已
  • TrafficStats 函数始终返回 -1

    当我尝试使用 TrafficStats 类检索流量数据时 TrafficStats getTotalRxBytes and TrafficStats getTotalTxBytes 即使我使用浏览器加载某些网页 函数也总是返回 1 我从一些
  • 在 Java 中使用 Apache Common 的 WhoisClient

    我正在尝试使用 WhoisClient 对象进行 WHOIS 查询 但效果不佳 我的代码非常简单 String WHOIS SERVER WhoisClient DEFAULT HOST int WHOIS PORT 43 String h
  • __getattr__ 和 __getattribute__ 之间的区别

    我试图理解何时定义 getattr or getattribute The python 文档 http docs python org reference datamodel html highlight getattribute obj
  • 使用 Android Application 类来保存数据

    我正在开发一个相当复杂的 Android 应用程序 该应用程序需要大量有关该应用程序的数据 我想说总共大约 500KB 对于移动设备来说这个数据大吗 据我所知 应用程序中 更准确地说是活动中 的任何方向变化都会导致活动的完全破坏和重新创建