활용
- 자동 로그인 => 서버에서 내려주는 토큰값을 기기에 저장해서, 앱이 껐다 켜진다 해도 로그인상태를 유지.
- 체크 박스 체크 여부 등의 간단한 변수단위 데이터 저장.
사용법
1. package 'utils' 만들고 class를 'ContextUtil'로
- 단순 기능 수행을 담당하는 클래스들은, utils 패키지에 모아서 관리.
- Context 변수의 도움을 받아서 처리하게 됨. => 클래스 이름을 ContextUtil 로 이름 지어줌. (Context의 도움을 받는 기능 모음) => 사람 바이 사람
- 전제 사항 : 모든 코드를 companion object { } 안에 작성
=> ContextUtil.기능() 으로 클래스 자체의 기능으로 사용하기 위함.
1) 어떤 이름으로 SharedPreferences 를 사용하는지 이름을 변수로 저장.
=> 메모장 파일 이름에 대응되는 개념.
private val prefName = "프로젝트이름Pref"
private val prefName = "TestPref"
2) 저장해줄 데이터 항목명을 변수로 저장. => 자동완성을 이용해서 실수를 줄이기 위한 목적.
private val 항목이름 = "항목이름"
private val AUTO_LOGIN = "AUTO_LOGIN"
3) 각 항목에 대한 setter / getter 함수 작성
// setter
fun set항목이름 (context: Context, 저장할값변수 : 상황별자료형) {
val pref = context.getSharedPreferences(prefName, Context.MODE_PRIVATE)
pref.edit().put자료형(항목이름자동완성, 저장할값변수).apply()
}
// getter
fun get항목이름 (context: Context) : 자료형 {
val pref = context.getSharedPreferences(prefName, Context.MODE_PRIVATE)
pref.get자료형(항목이름자동완성, 저장된게없으면줄기본값)!!
}
// setter -> 자동로그인 저장 기능
fun setAutoLogin(context: Context, autoLogin: Boolean){
val pref = context.getSharedPreferences(prefName, Context.MODE_PRIVATE)
pref.edit().putBoolean(AUTO_LOGIN, autoLogin).apply()
}
// getter -> 자동로그인 여부 확인 기능
fun getAutoLogin(context: Context) : Boolean{
val pref = context.getSharedPreferences(prefName, Context.MODE_PRIVATE)
return pref.getBoolean(AUTO_LOGIN, false) // 기본은 false
}
완성된 MainActivityCode
package com.eunjeong.preferences
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.eunjeong.preferences.databinding.ActivityMainBinding
import com.eunjeong.preferences.utils.ContextUtil
class MainActivity : AppCompatActivity() {
private lateinit var viewBinding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(viewBinding.root)
viewBinding.autoLoginCheckBox.setOnCheckedChangeListener { buttonView, isChecked ->
// 지금 체큰된 상황을 그대로 => ContextUtil을 이용해 자동로그인 여부로 저장
ContextUtil.setAutoLogin(this, isChecked) // 저장
}
//화면이 만들어지면 => 저장된 자동로그인 여부 값을 체크박스에 반영
viewBinding.autoLoginCheckBox.isChecked = ContextUtil.getAutoLogin(this)
}
}
완성된 ContextUtil Code
package com.eunjeong.preferences.utils
import android.content.Context
class ContextUtil {
companion object{
private val prefName = "TestPref"
private val AUTO_LOGIN = "AUTO_LOGIN"
// setter -> 자동로그인 저장 기능
fun setAutoLogin(context: Context, autoLogin: Boolean){
val pref = context.getSharedPreferences(prefName, Context.MODE_PRIVATE)
pref.edit().putBoolean(AUTO_LOGIN, autoLogin).apply()
}
// getter -> 자동로그인 여부 확인 기능
fun getAutoLogin(context: Context) : Boolean{
val pref = context.getSharedPreferences(prefName, Context.MODE_PRIVATE)
return pref.getBoolean(AUTO_LOGIN, false) // 기본은 false
}
}
}
참고 ; class101+ 코딩티처 지니 강의
'Android' 카테고리의 다른 글
[Android] TabLayout - Viewpager 연계 라이브러리 (0) | 2023.01.02 |
---|---|
[Android] ViewPager (0) | 2023.01.02 |
[Android] Handler로 로딩 화면 만들기 (5) | 2023.01.01 |
[Android] AlertDialog (0) | 2022.12.31 |
[Android] 리스트뷰 Listview 목록 변경 반영하기 notifyDataSetChanged() (0) | 2022.12.31 |