我查找了有关如何发送数据的不同Q& A或者在Android中的活动之间发送数据的最佳方式,但是如果数据敏感,我无法找到最安全的方法来回答这个问题的答案。
在android中的活动之间发送数据的最佳方式: https://stackoverflow.com/a/4878259/5544859
哪种方式是最安全,最有效的数据发送方式?
答案 0 :(得分:2)
将数据放在Intent
中是最不安全的,只要IPC将数据从您的进程发送到核心操作系统进程,然后通过另一个IPC调用返回到您的进程。在Android的现代版本中,我知道没有任何安全问题 - 其他应用程序无法监视该IPC或以其他方式获取该数据。但是,在其他条件相同的情况下,始终将敏感数据保留在流程中比将流量传递到流程之外更安全。
引用的"持久对象(sqlite,分享首选项,文件等)"不是在组件之间传递数据的方法。这是一种长期使用数据的方法。现在,大多数应用程序需要这样的持久性,因此您可能出于其他原因而持久化并且只是利用它(例如,A触发器写入数据; E读取该数据)。但从效率的角度来看,磁盘I / O速度很慢,因此您需要持久性而不是数据传递时才能执行此操作。
但是,通常,通过持久性,我们维护某种内存缓存,以最小化磁盘I / O.这涉及静态字段和WeakReferences
,Stack Overflow答案中引用的另一个选项。
关闭袖口,对你的应用一无所知:
如果应该保留这些敏感数据,那么只需保留它,使用缓存,让E从缓存或持久存储中获取数据
如果不应该保留此敏感数据,但它很大并且可以再次获取(例如,通过网络I / O),请使用静态字段和WeakReference
对其进行缓存,你没有无限期地占用堆空间
如果这些敏感数据不应该保留,并且要么不大或者不能再次获取,请使用静态字段对其进行缓存,因此只要您的进程执行