Android App Track⛺-037

MunkiJeon·2024년 7월 31일

TIL

목록 보기
54/59
post-thumbnail

TIL (Today I Learned)

오늘 공부한거!

Preference란?

  • 프로그램의 설정 정보 (사용자의 옵션 선택 사항 이나 프로그램의 구성 정보)를
    영구적으로 저장하는 용도로 사용
  • XML 포맷의 텍스트 파일에 키-값 세트로 정보를 저장.

SharedPreferences

  • 응용 프로그램 내의 액티비티 간에 공유하며,
    한쪽 액티비티에서 수정 시 다른 액티비티에서도 수정된 값을 읽을 수 있다.

  • 응용 프로그램의 고유한 정보이므로 외부에서는 읽을 수 없다.

  • getSharedPreferences (name, mode)

    • 여러개의 Shared Preference파일들을 사용하는 경우
    • name : 프레퍼런스 데이터를 저장할 XML 파일의 이름이다.
    • mode : 파일의 공유 모드
      • MODE_PRIVATE : 파일 생성 모드: 생성된 파일은 호출 애플리케이션(또는 동일한 사용자 ID를 공유하는 모든 애플리케이션)에서만 액세스할 수 있는 기본 모드입니다.
        = 가장 흔히 쓰이는듯…
      • MODE_APPEND : 파일 생성 모드: openFileOutput(String, int)과 함께 사용하기 위해 파일이 이미 존재하는 경우 파일을 지우는 대신 기존 파일의 끝에 데이터를 씁니다.
      • MODE_ENABLE_WRITE_AHEAD_LOGGING : 데이터베이스 열기 플래그: 설정되면 기본적으로 미리 쓰기 로깅이 활성화된 상태로 데이터베이스가 열립니다.
      • MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE
        = 보안상 이유로 API level 17에서 deprecated됨
  • getPreferences —>잘안씀

    • 한개의 Shared Preference 파일을 사용하는 경우
    • Activity 클래스에 정의된 메소드 이므로, Activity 인스턴스를 통해 접근 가능
    • 생성한 액티비티 전용이므로 같은 패키지의 다른 액티비티는 읽을 수 없다.
    • 액티비티와 동일한 이름의 XML 파일 생성
  • 사용 가능한 데이터 타입

    //여러개의 Shared Preference
	val sharedPrefs = activity?.getSharedPreferences(
    getString(R.string.preference_file_key), Context.MODE_PRIVATE)
	//한개의  Shared Preference
	val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
예시코드
    //값을 저장할 때는 put메서드를 , 저장한 값을 꺼낼때는 get메서드를 사용해주면 된다
    //(get메서드에서는 default값을 설정해줘야한다)
    private fun saveData() {
		//val pref = getSharedPreferences("pref",0) -> 0 가독성이 떨어져 아래꺼 써야할 듯
        val pref = getSharedPreferences("pref", MODE_PRIVATE)
        //name : pref 이란 이름으로 Xml파일을 만듬
        //mode : MODE_PRIVATE = 생성된 XML 파일은 호출한 애플리케이션 내에서만 읽기 쓰기가 가능
        val edit = pref.edit() // 수정 모드
        // 1번째 인자는 키, 2번째 인자는 실제 담아둘 값
        edit.putString("name", binding.mainEtTitleEdit.text.toString())
        //neme이라는 키값으로 Edit Text의 적혀있는 값을 저장
        edit.apply() // 저장완료
    }

    private fun loadData() {
        //val pref = getSharedPreferences("pref",0) -> 0 가독성이 떨어져 아래꺼 써야할 듯
        val pref = getSharedPreferences("pref", MODE_PRIVATE)
        // 1번째 인자는 키, 2번째 인자는 데이터가 존재하지 않을경우의 값
        binding.mainEtTitleEdit.setText(pref.getString("name",""))
    }
  • ROOM은 다음 글에~


  • Gradle 빌드 파일 방식 Groovy와 KTS의 차이

    Gradle 빌드 파일 방식 Groovy와 KTS의 차이 참조

    • Groovy의 장단점

    • 장점
      • Groovy는 동적 타입 언어로서 높은 유연성을 제공하기에
      • 빌드 스크립트를 더 간결하고 동적으로 작성할 수 있다
      • Java에 익숙한 개발자에게 Groovy는 비교적 쉽게 접근할 수 있어 학습 곡선이 낮고 기존 Java 코드를 쉽게 통합할 수 있다
      • 오랜 기간 동안 Gradle의 기본 언어였기 때문에 관련 자료와 커뮤니티 지원이 많다
    • 단점
      • 동적 타입 언어의 특성상 컴파일 타임에 오류를 발견하기 어렵기에
      • 복잡한 빌드 스크립트에서 문제를 일으킬 수 있다
      • Groovy의 동적 특성 때문에 IDE에서의 코드 완성 및 오류 탐지 기능이
        Kotlin에 비해 제한적일 수 있다

    • Kotlin DSL (KTS)의 장단점

    • 장점
      • Kotlin은 정적 타입 언어이기에 컴파일 시점에 오류를 잡아내어 빌드 시간과 안정성을 개선됐다
      • Kotlin의 정적 타입 특성 덕분에 IDE에서 더 나은 코드 완성과 리팩토링, 오류 탐지 기능을 제공한다
      • Kotlin은 현대적인 언어 기능을 제공하기에 Kotlin 자체의 인기가 높아지면서 관련 자료가 점차 늘어나고 있다
    • 단점
      • Kotlin에 익숙하지 않은 사용자에게는 Groovy에 비해 배우기 어려울 수 있다
      • Kotlin DSL은 Groovy에 비해 초기 설정과 실행이 느릴 수 있다

    • Groovy와 KTS의 주요 차이점

      • 언어 특성: Groovy는 동적 타입, Kotlin은 정적 타입 언어
      • 성능과 안정성: Kotlin은 Groovy의 비해 더 높은 성능과 안정성을 제공한다
      • 코드 스타일과 구조: Kotlin은 Groovy의 비해 언어 상에서 더 구조화되고 모듈화된 코드 스타일을 장려하고 있다.
profile
공장자동화와 웹 개발을 핥아 먹다 앱 개발로 전향한 개발자의 키보드의 낡은 키캡⛑️

0개의 댓글