TIL #90

loci·2024년 7월 30일
0

TIL

목록 보기
84/103

sharedPreferences

preference는 프로그램의 설정 정보를 영구적으로 저장하는 용도
응용프로그램내에 액티비티간에공유하고 수정시 다른액티비티에서도 수정된 값 읽음
핸도폰에만 적용되는 설정(알림 등)에 사용됨
xml포맷의 텍스트파일에 키-값 세트로 정보를 저장하게 된다.

  1. 여러개 저장 getSharedPreferences
  2. 한개 저장 getpreferences

주로 getSharedPreferences를 사용

저장확인법

Device File Explorer -> data -> data -> 프로젝트이름의 파일(ex. com.android.ex10_1_preference) -> shared_prefs 파일 -> pref.xml
적용안됐을때 - data파일 우클릭 -> Synchroize

예제

package com.android.preference

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.android.preference.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        binding.btnSave.setOnClickListener{
            saveData()
            Toast.makeText(this, "Data Saved.", Toast.LENGTH_SHORT).show()
        }
        loadData()
    }

    private fun saveData() {
        val pref = getSharedPreferences("pref",0)
        val edit = pref.edit() // 수정 모드
        // 1번째 인자는 키, 2번째 인자는 실제 담아둘 값
        edit.putString("name", binding.etHello.text.toString())
        edit.apply() // 저장완료
    }

    private fun loadData() {
        val pref = getSharedPreferences("pref",0)
        // 1번째 인자는 키, 2번째 인자는 데이터가 존재하지 않을경우의 값
        binding.etHello.setText(pref.getString("name",""))
    }
}

갑자기 궁금해진점 constraint layout은 중첩시켜도 상관없는걸까

원래 기존의 레이아웃(Linear, RelativeLayout)들로 레이아웃을 만들때 중첩을 많이 시킬 수 밖에 없어 깊이가 깊어져 성능적 하락이 있었다. 그래서 constraint를 만들어 위젯들을 flat하게 만들수 있게 했는데 constraint로 레이아웃을 제작할때 constraint의 중첩이일어나면 똑같이 성능의 하락이일어나나? 그러면 constraint도 최대한 중첩을 지양해야 할까?

profile
편리한 개발자

0개의 댓글