我在Android中的类中使用静态变量:
class Test{
static int x;
}
卸载类或VM停止时,将删除此变量。
我需要将此变量保留更长的时间段,但我无法使用SharedPreferences或任何永久存储,因为此静态字段中的信息是敏感的,不应存储在任何可访问的存储中。
有什么建议吗?
编辑:
由于Android服务是在后台运行而且很少被操作系统停止,我决定在Service类中设置静态字段,但奇怪的是这并没有解决问题,似乎OS会卸载Service类即使服务本身仍然在后台运行,或者至少它似乎在调用某个事件时再次加载它,我不知道到底发生了什么,但静态字段在我设置一段时间后变为NULL计时器中的通知以检查该通知。谁能证实这一点?
答案 0 :(得分:1)
如果您想存储敏感信息(密钥或令牌),您可以使用密钥库提供程序,请找到android开发人员链接 - http://developer.android.com/training/articles/keystore.html。但它可以从Android 4.3开始提供。
答案 1 :(得分:1)
您可以创建一个在销毁活动后挂起的已启动服务。不再需要时可以销毁该服务。您仍然需要遵循良好实践,私有变量公共getter和setter并在清单中小心等。静态在这种情况下意味着您只有一个变量值的副本,而不管测试类类型的对象数量。