我對android開發還很陌生。我知道如果你不小心你的背景關系,它可能會導致記憶體泄漏,但我試圖做的是使用這個共享首選項而不實體化它。就這樣稱呼它:
MySharedPref.getInstance(context).amsKey.toString()
這是正確的方法嗎?這對記憶體泄漏安全嗎?我如何讓它變得更好?請參閱下面的 MySharedPref:
class MySharedPref(private val ctx: Context) {
enum class key {
AMSKEY,
KEYOFFSET,
DEVICEID,
URL,
PORT,
LOGIN_ENDPOINT
}
var pref: SecurePreferences? = null
init {
pref = SecurePreferences(ctx, INSTANCE, "securedkeypass", true)
}
companion object {
private val INSTANCE = "shared"
private var mInstance: SharedForAmsSecured? = null
@Synchronized
fun getInstance(mCtx: Context): SharedForAmsSecured {
if(mInstance == null) mInstance = SharedForAmsSecured(mCtx)
return mInstance as SharedForAmsSecured
}
}
val amsKey: String?
get() {
return pref?.getString(SharedForAms.key.AMSKEY.name)
}
val keyOffset: Int
get() {
var keyOffset = pref?.getString(SharedForAms.key.KEYOFFSET.name)
if (keyOffset != null) {
return keyOffset.toInt()
}
return 0
}
val deviceId: String?
get() {
return pref?.getString(SharedForAms.key.DEVICEID.name)
}
val url: String?
get() {
return pref?.getString(SharedForAms.key.URL.name)
}
val loginEndpoint: String?
get() {
return pref?.getString(SharedForAms.key.LOGIN_ENDPOINT.name)
}
val port: String?
get() {
return pref?.getString(SharedForAms.key.PORT.name)
}
SAVING CODES HERE.....
}
uj5u.com熱心網友回復:
那應該是安全的。您正在保存 SharedPreference,它不應該參考回 Activity。但是,如果您想更加安全,請改為傳入 context.getApplicationContext()。這將回傳 Application 物件,該物件可以安全地保存在變數中作為應用程式級別的單例。事實上,出于這個原因,只要有可能就傳遞應用程式背景關系而不是 Activity 背景關系。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373197.html
上一篇:Android材質按鈕不能使用setStrokeColor方法
下一篇:AWSSDK上的回呼和協程
