如何在react-native中保留在后台杀死的android应用程序的状态

2024-03-01

当 Android 应用程序被发送到后台时,它可以保留其实例状态,以防由于内存不足而被杀死(请参阅活动:onSaveInstanceState() https://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)和捆绑参数活动:onCreate(捆绑保存实例状态) https://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)).

默认的 Activity 行为是保存视图层次结构的状态,因此在很多情况下,您不必编写任何代码,它“就可以工作”[tm]。

现在对于反应本机来说,这是不正确的。 React Native 应用程序托管在单个 MainActivity 中,其状态包含在应用程序中的 javascript 解释器中。

我创建了一个示例存储库,其中包含简短的文档,如何在此处重现我的问题:https://github.com/einvalentin/react-native-state-test https://github.com/einvalentin/react-native-state-test

我希望react-native能够挂钩原生android应用程序状态序列化机制,同时为应用程序开发人员提供挂钩以在需要自定义序列化时进行扩展。或者,我可以看到自己扩展 MainActivity 以将生命周期事件转发到 Javascript 层,并在那里手动执行一些自定义状态序列化 - 但这感觉有点笨拙。

有没有一种我忽略的明显方法可以将状态保存在react-native中,以便在后台被杀死的应用程序不会从头开始重新启动?例如,在与应用程序交互时接到电话的低内存设备上,这种情况总是可能发生。

多谢!


如果您使用 Redux 进行状态管理,您可能应该使用还原-持久化 https://github.com/rt2zz/redux-persist。如果没有,您有几种不同的选择:

  • 异步存储 https://facebook.github.io/react-native/docs/asyncstorage.html
  • 领域反应本机 https://realm.io/news/introducing-realm-react-native/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在react-native中保留在后台杀死的android应用程序的状态 的相关文章

随机推荐

  • 如何在带有复制和交换习惯用法的赋值运算符中使用 noexcept ?

    移动赋值运算符通常应声明为 noexcept 即将类型存储在 STL 容器中 但是复制和交换习惯用法允许在单段代码中定义复制和移动赋值运算符 在这种情况下 如何使用 noexcept 说明符 复制构造可以抛出异常 但我怀疑它是否会违反 no
  • 如何更新Slurm中的作业节点号?

    我有一项待处理的工作 我想调整它的大小 我试过 scontrol update job
  • VBA获取该月的最后一天

    我对 VBA 还很陌生 我有一个日期范围 我需要编写一个代码 将单元格中的日期更改为单元格中使用的该月的最后一天 例如 如果单元格中的日期是28 03 2018我希望它被替换为31 03 2018 知道我该怎么做吗 借助 Eomonth 公
  • C# SCROLLINFO 不适用于 Chrome 窗口

    我试图从窗口句柄检索滚动信息 但我一直得到 0 值 我采用这种方法是因为我的目标是捕获窗口的完整滚动屏幕截图 目的是实现自动滚动和图像捕获 虽然我已经成功实现了自动窗口滚动 但我遇到了不同窗口的滚 动行为的变化 例如 发送 100 的鼠标增
  • 如何编写采用字符串迭代器的特征方法,避免单态化(静态调度)?

    我想定义一个具有对字符串序列进行操作的方法的特征 同时 我想避免在特征中使用泛型方法 即静态分派 以便我可以将此特征用作特征对象 到目前为止 我得到的最好的解决方案是像下面这样做 pub trait Store fn query valid
  • 应用程序无法加载。无法创建 Visual C# 2015 RC 编译器

    我正在尝试安装Visual Studio 2015 RC https www visualstudio com en us downloads visual studio 2015 downloads vs社区版 我下载了网络安装程序并安装
  • 没有 Chrome 浏览器的 Google TV 模拟器?

    在启用了 KVM 的 Linux 机器上 Google TV 模拟器上没有 Google Chrome 浏览器是否正常 当启动一个Intent从我的应用程序点击网页 我收到错误消息 No activity found to handle i
  • 最相距的 k 个元素(聚类?)

    我有一个简单的机器学习问题 我有 n 110 个元素 以及所有成对距离的矩阵 我想选择相距最远的 10 个元素 也就是说 我想要 Maximize Choose 10 different elements Return min distan
  • 如何从头开始启动 MFC 应用程序?

    换句话说 来自一个空白的 win32 项目 无向导 这就是我所在的地方 预处理器定义 WIN32 链接器 gt 系统 gt 子系统 控制台 int tmain int nRetCode 0 initialize MFC and print
  • 在 Visual Studio 2010 中控制 Tab 键顺序

    有没有一种简单的方法可以在 Visual Studio 表单设计器中更改复杂表单上控件的选项卡顺序 我知道我可以选择 Tab Order 模式 它会向我显示所有控件及其选项卡索引 但是在复杂的表单中间添加新控件并且必须再次重新选择表单上的每
  • 页面加载时的简洁过渡和动画

    我目前正在使用 Svelte 和 Sapper 开发一个网站 我正在使用 Svelte 过渡来为某些页面元素添加动画效果 每当我更改为新的页面路由时 过渡动画都会正确显示 但是当我第一次加载页面时 它们没有动画 Svelte 如何处理页面加
  • Visual Studio 2010 中的 Boost,IntelliSense 错误

    我想看看你能否给我指路 我碰巧编译并引用了 boost 库 以便将它们与 Visual Studio 2010 一起使用 在构建我的测试项目时 我收到这两个 IntelliSense 错误 1 IntelliSense error dire
  • C# asp.net 调用 javascript

    我在 asp content 中有一个 div
  • 在Matlab中过滤包含NaN的图像?

    我有一个二维数组 doubles 代表一些数据 它有一堆NaNs在里面 数据的等值线图如下所示 所有的空白都是NaNs 灰色菱形可供参考 填充轮廓显示我的数据的形状 当我用过滤数据时imfilt the NaNs大量地研究数据 所以我们最终
  • 可重用的内容视图 .NET MAUI

    简而言之 我有一个内容视图 例如
  • 关键字“FOR”附近的语法不正确

    我已经写了下面提到的查询 DECLARE cols AS NVARCHAR MAX query AS NVARCHAR MAX select cols STUFF SELECT distinct QUOTENAME Name from db
  • 在android studio中删除AVD后如何释放空间?

    我想在android studio的AVD管理器中删除AVD 在删除它之前 它需要 4 GB 的存储空间 当我删除它时 我不会获得任何可用存储空间 删除模拟器后如何恢复空间 删除位于此目录中的模拟器的临时文件临时文件夹C Users use
  • 修复了 5 个流体 DIV 旁边的 DIV

    我需要一个相当复杂的布局 我已经尝试了几个小时来解决这个问题 但仍然没有运气 我需要 5 个流体 DIV 旁边有一个固定 div 所有流体 DIV 都需要具有不同的百分比 但所有 6 个 DIV 组合 1 个固定 5 个流体 必须等于父 D
  • 需要帮助创建架构以将 CSV 加载到 BigQuery 中

    我正在尝试从 Google Cloud Storage 将一些 CSV 文件加载到 BigQuery 中 并努力解决架构生成问题 有一个自动生成选项 但记录很少 问题是 如果我选择让 BigQuery 生成架构 它会很好地猜测数据类型 但有
  • 如何在react-native中保留在后台杀死的android应用程序的状态

    当 Android 应用程序被发送到后台时 它可以保留其实例状态 以防由于内存不足而被杀死 请参阅活动 onSaveInstanceState https developer android com reference android ap