'2017/09/19'에 해당되는 글 2건

  1. 2017.09.19 [Android/Kotlin] Kotlin 의 val 에 대해서
  2. 2017.09.19 [Android] 액티비티내 캡처 방지하기

[Kotlin] val 프로퍼티에 대해서


Android App 개발시 Java를 사용할때에는 상수를 정의할때, final 을 사용했습니다.


처음 Kotlin을 접했을때에는 상수를 정의할때에는 어떤것을 써야하지? 라는 의문이 생겼고 지금까지는 val 프로퍼티가 상수로 불변값으로 생각했었습니다.


하지만 Kotlin 사이트내 설명 문구에서


"Classes in Kotlin can have properties. These can be declared as mutable, using the var keyword or read-only using the val keyword."


진하게 표시된 Read-Only 라는 글이 보이시나요?


네, 그렇습니다. immutable이 아닌 read-only 네요..;;


갑자기 궁금해져서 val 가 immutable이 아닌것을 확인해보고 싶었습니다.


테스트 코드 가동!!



class KotlinSpec {

    interface Counter {
        val count: Int
    }

    class SomeCounter: Counter {
        var _counter = 0

        override val count: Int
            get() = _counter++
    }

    @Test
    fun isValMutableTest() {
        val counter = SomeCounter()
        assertEquals(counter.count, 0)
        assertEquals(counter.count, 1)
    }
}


위와 같이 코드를 짜서 테스트를 돌리니 테스트가 정상으로 성공하네요.


따로 getter를 두지 않고 변수 선언과 동시에 초기화를 하게 되면 set을 할 수 없으니 immutable과 같다고 볼 수 있겠지만, 정확하게 알고 가는게 좋을것 같습니다.

(레퍼런스 사이트에서 영어라고 꼼꼼하게 읽어보지 않은 제 잘못이 크죠...)


간단한 내용이지만 읽어주셔서 감사합니다~

저작자 표시
신고
Posted by 냥아

[액티비티내 화면 캡처 방지하기]


오래간만에 블로그에 글을 남기네요^^;;


다시 작은글부터 시작해서 하나 둘씩 제가 성장해가는 내용들을 남겨보고 싶습니다..



[Java Source Code]

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);


[Kotlin Source Code]

window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)


코틀린이 안드로이드 공식언어로 채택된 만큼 최대한 코틀린을 사용해보려고 합니다 ㅎㅎ


화면캡처 방지 소스코드를 위의 한줄을 액티비티의 onCreate 호출시 설정해두면 적용이 됩니다.


만약 액티비티내 특정 영역에서 화면 캡처를 허용해야한다면, window.clearFlags를 사용하시면 됩니다.


여러 단말을 모두 테스트 해본것은 아니지만, 일부 단말에서는 "보안정책에 따라 화면을 캡처할 수 없습니다." 라는 토스트 메시지가 발생합니다.

저작자 표시
신고
Posted by 냥아