Android 윈도우(Overlay) 권한 사용시 예외 사항

Android 6.0인 Marshmallow부터는 SYSTEM_ALERT_WINDOW을 사용하는 경우 권한 획득이 필수가 되었습니다.

다만 Play 스토어 정책에 따라서 조금씩 다를 순 있습니다.

  • Play 스토어에서 설치하는 경우 Overlay가 true로 자동 활성화 처리됩니다.(2017. 03)

하지만 Android 6.0(Marshmallow)와 7.0(Nougat)에서 서로 다른 접근 방법을 가지고 있습니다.

개발하실 때 그리고 사용자가 사용할 때 주의해야 할 버전이 6.0입니다.

그래서 6.0(Marshmallow)에서 발생하는 예외 사항을 정리하는데 이 예외사항은 권한과 관련한 큰 문제입니다.

Read More

ButterKnife/findViewById 대신 Kotlin android extensions 사용하기

Kotlin에서는 ButterKnife와 findViewById을 사용하지 않아도 됩니다.

Kotlin에서는 간단하게 kotlin Extensions을 사용할 수 있습니다.

우선 적용하지 않고 일반적인 코드는 아래와 같습니다.

findViewById를 매번 해야 하고, 귀찮습니다.

적용하는 방법도 여러 가지가 있을 수 있습니다.

class ImageFragment : Fragment(), ImageContract.View {

    private val rootContainer by lazy {
        activity.findViewById(R.id.root_container) as CoordinatorLayout
    }

    override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
        // 또는 아래와 같이
        val rootContainer = activity.findViewById(R.id.root_container) as CoordinatorLayout
    }
}

Read More

Kotlin Parcelable 플러그인 사용하기

Android Studio에는 다양한 플러그인이 있습니다.

이번 글에서는 Kotlin의 Parcelable을 간단하게 적용할 수 있는 플러그인을 소개합니다.

Parcelable은 코드를 일일이 처서 적용하는게 상당히 귀찮습니다.

그래서 serializable을 사용해서 적용하기도 합니다.

하지만 Android에서 구현한 ParcelableSerializable 보다 성능적으로 이득이라고 합니다.

출처 : PARCELABLE VS. JAVA SERIALIZATION IN ANDROID APP DEVELOPMENT의 그래프 참조하시면 되겠습니다.

parcelable_serializable_performance

Read More

Android MVP 무작정 따라하기 - Package는 어떻게 할까?

Android MVP를 작성하는데 있어서 Package 구조를 어떻게 가져가면 좋을지 고민을 할 수밖에 없습니다.

딱히 정해지거나, 어떤게 좋은지 사실 저도 알지는 못합니다.

하지만 지금까지 MVP를 작성하면서 가장 괜찮은 방식의 패키지 구조를 사용하고 있다고 생각되어 이를 정리해보려고 합니다.

Read More