https://dev-cho.tistory.com/63

https://inpa.tistory.com/entry/GOF-💠-싱글톤Singleton-패턴-꼼꼼하게-알아보자#⚠️_멀티_쓰레드_환경에서의_치명적인_문제점

kotlin에서 object를 통해 싱글톤을 구현할 수 있다.

멀티 스레드 환경에서 싱글톤

image.png

다행히도 해시 코드 확인 시 하나의 객체만이 만들어지고 있다.

      CoroutineScope(Dispatchers.IO).launch {
            Log.d("데이터 확인","beacon : ${dataModel.beacon}, sensor: ${dataModel.sensor}, gps : ${dataModel.gps}")
            if (dataModel.beacon != null && dataModel.sensor != null && dataModel.gps != null) {
            val result = runCatching {
                    dataModel.let { RetrofitClient.instance.sendUserIgnoreData(it) }
                }

            result.onSuccess {
                if (it.result) {
                    Log.d("success send data", "성공")
                    isDataSent = true
                }
            }
            result.onFailure {
                Log.d("failed to send data", "${it.message}")
            }
        }
        }

질문.png

데이터 안정성

데이터가 유실되어도 괜찮다면 지금처럼 해도 무방

리스크제로 측의 요구에서는 데이터 지연이 발생해도 ㄱㅊ 라고 했으니 현재로서는 추가 로직 필요치 않음