Android/Kotlin
안드로이드 SharedPreferences Manager
easy-1
2021. 10. 26. 15:21
<개요>
로컬 데이터 읽기, 쓰기에 자주 사용되는 SharedPreferences 를 좀 더 효율적으로 사용하기 위함
<적용방법>
1. PrefManager object 생성
object PrefManager {
private var pref: SharedPreferences? = null
fun init(context: Context) {
if (pref == null) pref =
context.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE)
}
// String
fun read(key: String?, defValue: String?): String? {
return pref!!.getString(key, defValue)
}
fun write(key: String?, value: String?) {
val prefsEditor = pref!!.edit()
prefsEditor.putString(key, value)
prefsEditor.apply()
}
// Boolean
fun read(key: String?, defValue: Boolean): Boolean {
return pref!!.getBoolean(key, defValue)
}
fun write(key: String?, value: Boolean) {
val prefsEditor = pref!!.edit()
prefsEditor.putBoolean(key, value)
prefsEditor.apply()
}
// Int
fun read(key: String?, defValue: Int): Int {
return pref!!.getInt(key, defValue)
}
fun write(key: String?, value: Int?) {
val prefsEditor = pref!!.edit()
prefsEditor.putInt(key, value!!).apply()
}
}
2. Application 을 상속받은 클래스에서 초기화 작업 진행
- 해당 코드는 Hilt 를 사용중이여서 @HiltAndroidApp 이 선언되어 있음
@HiltAndroidApp
class GlobalApplication : Application() {
override fun onCreate() {
super.onCreate()
// SharedPreferences
PrefManager.init(applicationContext)
// ...
}
}
3. 사용하고자 하는 곳에서 호출
- 해당 코드에서는 Hilt 와 DataBinding을 적용한 코드임
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private val viewModel by viewModels<MainViewModel>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
// write
PrefManager.write(PREF_NAME, "data")
// read
PrefManager.read(PREF_NAME, "")
}
}