건강꿀팁

안드로이드에서 코드작성하다보면 코드가 자동 저장 되지요?

이와 같이 비슷하게 editText에 있는 글을 0.5초마다 자동저장하는 기능을 작성해보겠습니다.

이전에 설명한 데이터저장하는 방법인 getSharedPreference를 사용해보겠습니다.

getSharedPreference에 대해 알고싶다면 아래 링크를 참조해주세요~

binendbinend.tistory.com/7?category=863798

 

Android Kotlin getSharedPreferences : 데이터 저장하는 방법

안드로이드 코틀린에서 앱 내에 데이터 저장하는 방법입니다. getSharedPreferences 사용하면 간단하게 데이터 저장할 수 있습니다. 간단하게 비밀번호를 저장하려는 예시를 들어 설명하도록 하겠습

binendbinend.tistory.com

 

    private val handler = Handler(Looper.getMainLooper())

    private val contentsEditText: EditText by lazy{
        findViewById<EditText>(R.id.contentsEditText)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val contentsPreference = getSharedPreferences("contents", MODE_PRIVATE)
        contentsEditText.setText(contentsPreference.getString("contents", ""))

        val runnable = Runnable {
            contentsPreference.edit(true){
                putString("contents", contentsEditText.text.toString())
            }
            Log.d("MainActivity", "save")
        }

        contentsEditText.addTextChangedListener {
            Log.d("MainActivity", "text changed ${it}")
            handler.removeCallbacks(runnable)
            handler.postDelayed(runnable,500)
        }
    }

ui에 접근하려면 Handler(Looper.getMainLooper())를 사용해야합니다.

그리고 putString을 통해 editText내용(데이터)를 저장합니다.

이때 이 저장하는 기능을 Runnable로 작성하여 editText의 텍스트가 변경될때마다 돌아가고 있는 runnable을 removeCallbacks를 이용하여 제거합니다.

이렇게 되면 텍스트 작성중에는 저장이 되지 않고 중간에 작성하지 않고 0.5초가 지나면 자동 저장이 되게 됩니다.

0.5초를 기다리려면 handler.postDelayed(runnable,밀리초)를 사용하면 됩니다.

 

즉 정리하자면!

1. 다른 쓰레드에서 UI접근이 불가능하므로 메인쓰레드에 접근하기 위해 var handler = Handler(Looper.getMainLooper())를 사용한다.

2. 쓰레드에서 작동할 기능, Runnable를 정의한다.

3. 딜레이를 주고 싶으면 handler.postDelayed(runnable, 밀리초)를 사용하고 진행중인 runnable를 제거하고 싶다면 handler.removeCallbacks(runnable)를 사용하면된다.

아직 코틀린 초보라 자세히는 모르지만 내가 이해한 바로는 저렇다!

나중에 1년뒤에 보면 왜이렇게 썼지하고 과거의 나를 비웃겠찌... ㅋㅋ

 

끗!

공유하기

facebook twitter kakaoTalk kakaostory naver band