在 Android 中的活动之间发送数据的最安全方式

Most secure way of sending data between activities in Android

我在 Android 中查找了关于如何发送数据或在活动之间发送数据的最佳方式的不同问答,但我找不到关于什么是最安全的方式的答案,如果数据敏感。

在 android 中的活动之间发送数据的最佳方式:

以下哪种方式发送数据最安全、最有效?

将数据放在 Intent 中是最不安全的,因为 IPC 将数据从您的流程发送到核心 OS 流程,然后通过另一个流程返回您的流程IPC调用。在 Android 的现代版本中,我知道这没有安全问题——其他应用程序无法监视该 IPC 或以其他方式获取该数据。但是,在其他条件相同的情况下,始终将敏感数据保留在您的进程中比将数据传递到您的进程之外更安全。

引用的 "Persist objects (sqlite, share preferences, file, etc.)" 不是在组件之间传递数据的方式。这是一种持久化数据以供 long-term 使用的方法。现在,大多数应用程序都需要这种持久性,因此您可能出于其他原因拥有持久性并简单地利用它(例如,A 触发写入数据;E 读取该数据)。但是,从效率的角度来看,disk I/O 很慢,所以当您需要持久性而不是数据传递时就可以这样做。 但是,通常情况下,通过持久性,我们维护某种 in-memory 缓存,以最小化该磁盘 I/O。这涉及静态字段和 WeakReferences,Stack Overflow 答案中引用的另一个选项。

即兴发挥,对您的应用一无所知:

  • 如果这个敏感数据应该被持久化,那么就持久化它,使用缓存,让E从缓存或持久化存储中获取数据

  • 如果不应保留此敏感数据,但它很大并且可以再次获取(例如,通过网络 I/O),请使用静态字段和 WeakReference,所以你不会无限期地占用堆 space

  • 如果不应保留此敏感数据,并且数据量不大或不易再次获取,请使用静态字段对其进行缓存,这样只要您的进程存在,它就会一直存在