Android/랜덤리즘

[랜덤리즘] 관련 알고리즘 보이기/숨기기 기능 개발하기 -1

김 안개 2024. 2. 23. 21:44

1차적으로 배포를 했더니 넣으면 좋을 것 같은 기능들이 머릿속에서 마구마구 샘솟아 ..!!

 

아이디어샘이솟아리오레이비

 

그래서 있으면 좋을 것 같은 기능들이 떠오르면 깃헙 이슈탭에 일단 다 적어놓았다.

만들지는 못하더라도 있으면 좋을 것 같은 기능들!

 


이번에 만들 기능

관련 알고리즘 보이기/숨기기 ! 

두둥!

관련 알고리즘 보이기/숨기기는 무엇이냐?라고 묻는다면

 

 

위에 보이는 것 처럼 <관련 알고리즘> 오른쪽에 있는 버튼을 통해 문제와 관련된 알고리즘 내용을 화면에 보이거나 숨길 수 있는 기능이다.

 


 

필요하다고 생각한 이유

문제가 보여졌는데, 이 문제를 풀기 위해서 필요한 개념들이 가장 처음으로 보인다면 ... 좋을까?

문제를 다 풀고 '아~ 이런 개념들로 풀 수 있구나' 하는 것으로 체크하는 사람들도 많을 것이고, 풀다가 막히게 되었을 때 어떤 알고리즘을 사용해서 풀어야 할까? 할 때 확인하는 용도로도 사용할 수 있을 것이다.

하지만 문제제목만 보이고 내용이 보여지는 것은 아니기에 상관없는 사람들도 있을 것 같았다.

그래서 '보이기/숨기기' 를 사용자가 선택할 수 있으면 좋을 것 같다고 생각되었다.

 

그리고 이 기능을 '설정' 화면에서도 조작할 수 있어야 한다!

 

문제 화면에 보이는 버튼 설정화면의 버튼
일시적으로 보였다 안보였다 조작할 수 있는 버튼 - 기본값으로 적용할 수 있는 버튼

 


구현을 위해 고민한 방법들

1) 설정 화면에서 클릭 -> 문제 화면으로 클릭 이벤트 구현해서 값을 넘겨주고, 그 값을 문제 ViewModel 에 저장해서 관리한다.

그런데, 앱이 종료되고 다시 앱을 시작시킨다면 ProblemViewModel 에 저장된 값이 날라간다는 단점이 있음

 

2) SharedPreferences 를 통해 토글 버튼 ON-OFF 를 저장 후, 문제를 화면에 보여줄 때마다 확인 (✅)

1번의 단점인 앱 종료 후, 다시 앱을 켰을 때 날라간다는 단점을 보완할 수 있겠다.

-> SharedPreferences 는 파일의 형태로 데이터가 저장되므로 앱이 종료되어도 저장된 내용 불러와서 사용할 수 있기 때문에!

그런데, ProblemFragment 가 화면에 보여질 때마다 파일에 저장된 데이터를 불러오는 과정을 반복하는 것이 좋은 방법일까?

 

일단 공식문서를 확인해보니 SharedPreferences 대신 DataStore 사용을 권장하는 것 같아 DataStore 를 통해 구현하는 것으로 결정했다!

 

3) Room 데이터베이스를 통해 데이터 저장하기

설정 값 1개를 위해 사용하기에는 비용이 크게 든다고 생각되어서 옳지 않은 것 같다.
또한, DataStore 문서 내에서도 large 데이터라면 Room 을 사용하는 것이 좋다고 권하지만 나는 very .. very .. small 데이터이기때문에 .. 적합하지 않다고 판단함

 


 

글이 너무 길어지면 한 눈에 보기 힘들고 찾아보기 힘들다고 느껴서 ... 다음 포스팅에서 어떤 식으로 구현했는지에 대해 작성할 예정이다!