android - 在应用程序安装时将对象保存到内部存储

标签 android installation storage

我想知道是否可以在用户在移动设备上安装应用程序时保存对象。

我为什么要这个?

我的应用程序使用一些默认对象来实现他的正常行为,每当用户启动应用程序时,我希望这些对象在那里被使用。我当然可以在每次用户打开应用程序时创建它们。 但这可能会消耗一些不必要的时间、性能和电池。如果它是默认设置,我只想创建一次,然后它就一直存在。

我还将使用内部存储来创建这种类型的新对象,将有我上面描述的默认对象,也将有创建新对象并保存它们以备后用的选项,在另一个时间该应用程序已启动,但没问题,我已经阅读了一些有关如何序列化对象并使用内部存储来保存它们的内容:)

我只是问第一个问题,一开始只创建一次项目,也许是在应用程序安装的时候?我假设..但不知道是否可能。

拥有这个空间已经一年多了,我已经从你这里学到了很多东西,谢谢;)

最佳答案

Android 提供以下 Intent 来检测应用程序安装

     <action android:name="android.intent.action.PACKAGE_ADDED"/>  
     <action android:name="android.intent.action.PACKAGE_REMOVED"/>

如果您将这些与广播接收器结合使用,您将在用户安装新应用时收到通知。此解决方案的问题是,当您尝试检测自己的应用程序安装时,它不会帮助您。

您可以做的是每次用户启动您的应用时

  • 检查对象是否存在
  • 如果没有创建一个并将其写入内部存储。

这样就创建了一次。根据您尝试保存的对象类型,您可能会考虑使用 SharedPreferencesSqlLite或者只是一个 file IO .如果您正在编写 Java 对象,那么序列化是必经之路。

更新

如果您打算第一次从网络获取数据,取决于您可以决定的大小,

  • 小文件:将其放在 Asset 文件夹中并与 apk 一起发送。
  • 大文件:如果文件很大,您可能会考虑将部分内容与 apk 一起发送,并在后台进程中进行同步和更新,或者从网络下载所有内容

关于android - 在应用程序安装时将对象保存到内部存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15775109/

相关文章:

android - 生成:生成失败-执行taskAction

PHP 警告 : PHP Startup: ? ????????: 无法初始化模块

asp.net - 安装程序类显然没有被调用

java - 无法在 Windows 10 上安装 Java(1603 错误)

Cassandra 每个节点设置多个磁盘

android - 如何从 SharedPreferences 中删除一些键/值对?

android - ImageView 缩放 BOTTOM_CROP

database - 数据库记录如何存储在磁盘上?

javascript - javascript如何存储数组

安卓 : Play Services issue