Android
-
View Binding 사용해보기Android/Android 2020. 11. 5. 17:38
Kotlin 1.4.20 버전에서 Kotlin Android Extensions Compiler 플러그인이 Deprecated 됬다 왜 Kotlin Android Extensions Compiler 플러그인을 Deprecated 했을까? 글로벌 네임스페이스로 노출이 되어 현재 Activity 에서 사용중이지 않은 View 를 참조 할 수 있다. 이에 Null Safty 하지 않다. 오직 Kotlin 언어로만 접근 및 사용이 가능하다. 그러면 무엇으로 대체를 해야 할까? View Binding View Binding 은 Binding 뿐만 아니라 View Lookup 에도 권장되지만 Android Kotlin Extensions와 비교할 때 오버헤드가 약간 추가된다. Kotlin Extensions 와 비..
-
의존성주입 ( DI, Dependency Inject ) 에 대해 알아보기Android/Programming 2020. 8. 25. 21:17
의존성에 대해 알아보기 DI는 'Dependency Inject' 의 약자로 의존성 주입에 대한 약자이다. 의존성 주입은 클라이언트의 의존성 생성과 클라이언트의 행동을 분리하여 클래스의 관계가 느슨하게 결합되고 의존성 반전 및 단일 책임 원칙을 따를 수 있다. 이에 의존성 주입은 4가지의 역할이 있는데 다음과 같다 서비스 : 데이터 제공 클라이언트 : 서비스를 사용 인터페이스 : 클라이언트가 서비스를 사용할 수 있도록 도움 인젝터 : 클라이언트에 서비스를 주입하기 위한 책임 간단하게 아래의 코드를 보도록 하자. class EnergyCar(name: String) { fun move() {} } class Driver() { val car = EnergyCar("가성비 좋은 자동차") fun drive(..
-
테스트코드를 왜 작성 해야 하는 걸까?Android/Android 2020. 8. 21. 21:08
개발을 잘하는 것에 대한 정의를 내리라고 한다면 아래와 같이 정의를 할 것이다. 코드의 유지보수성을 좋게 만드는 개발 우리가 실제 사용하는 앱이나 프로그램이 간단할 수 있지만 대부분은 복잡하다. 복잡하다는 뜻은 특정 기능을 개발 하였을 경우 Side Effect 가 나기 쉽다는 소리다. 하지만 시간을 투자하여 내가 만든 프로그램의 버그를 줄이고 내 코드에 대한 신뢰를 형성 할 수 있다면 어떨까? 그것이 바로 테스트 코드이고 아래에서 설명을 할 것이다. 테스트 코드의 장점은 무엇이 있을까? 결함을 사전에 발견 할 수 있다. 테스트 코드는 모든 상황을 작성해야 한다. (성공, 실패) 이를 통해 내가 놓치고 있는 부분이 없는지 생각을 통해 코드의 허점을 보완하여 안정서 있는 코드를 개발 할 수 있다. 문서로서..
-
Firebase Clounding Message 구현 (3) - Notification 구현Android/FireBase 2019. 8. 29. 20:11
앞서 기본적인 셋팅을 하였고 이번 시간에는 실제 파이어데이터에서 알림을 보냈을때 해당 알림을 받아 실제 기기에서 Notification을 출력시켜보는 기능을 구현해보도록 하겠습니다. NotificationChannel 구현하기 object NotificationChannelManager { const val channelId = "one-channel" private const val channelName = "My Channel One" private const val channelDescription = "My Channel One Description" var channel: NotificationChannel? = null @RequiresApi(Build.VERSION_CODES.O) get()..
-
Android Architecture Components #7 - WorkManagerAndroid/AAC 2019. 8. 6. 22:19
WorkManager는 특정 작업을 유예(Defer) 처리, 비동기 처리를 목적으로 만들어 졌다. 유예 처리라는 것은 특정 시점, 특정 상황에서 작업을 처리함을 이야기 한다. JobSchduler 혹은 FirebaseJobDispatcher, AlarmManager 같은 클래스를 이용해 처리했었는데 WorkManager는 위의 클래스와 다른 방식이 아니라 통합하기 위한 라이브러리이다. 즉, WorkdManager를 이용하면 상황에 따라 위의 3가지중 하나를 반환한다. 결국 특정 작업의 유예, 비동기 처리를 조금 더 쉽게 작성하기 위한 라이브러리 이다. JobSchduler는 API Level 21에 추가되었고 FirebaseJobDispatcher는 API Level 9에서 추가가되었지만 기기의 Goog..
-
Android Architecture Components #6 - PagingAndroid/AAC 2019. 8. 6. 17:58
RecyclerView에서 페이징 처리를 조금더 쉽고 효율적으로 작성하게 하기 위한 라이브러리이다. 많은 양의 데이터를 한꺼번에 로딩하지 않고 점진적인 로딩방법을 이용함으로 네트웤 사용량 및 시스템 리소스를 적게 사용이 가능하다. Gradle Dependency implementation 'androidx.paging:paging-runtime:2.1.0' // Rx 호환 선택 implementation "androidx.paging:paging-rxjava2:2.1.0" 1. DataSource 생성하기 DataSource는 실제 데이터를 획득하는 역할을 한다. 데이터는 Network에서 받아온 데이터 또는 DB에서 받아오는 데이터 일 수도 있다. DataSource는 추상 클래스로 이를 구현한 Ite..
-
Firebase Clounding Message 구현 (2) - 서비스 구현Android/FireBase 2019. 8. 5. 18:29
기본셋팅까지 다 끝내셨으면 이제 Firebase에서 날라오는 알림을 받기 위한 서비스를 구현 해주어야 한다. 1. FirebaseMessagingService 상속받은 클래스 생성 class MyFirebaseMessagingService : FirebaseMessagingService() { /** * 메시지를 받았을 경우 그 메시지에 대하여 구현 */ override fun onMessageReceived(remoteMessage: RemoteMessage?) { Log.d(TAG, "Received Message !!") } /** * 구글 토큰 값 흭득 * 아래 토큰은 앱이 설치된 디바이스에 대한 고유값으로 푸시를 보낼때 사용 */ override fun onNewToken(token: Strin..
-
Firebase Clounding Message 구현 (1) - 기본적인 환경 구축Android/FireBase 2019. 8. 5. 18:19
GCM이 멸망하고 FCM이 두둥탁! 간단하게 만들어 보는걸 해보도록 하겠습니다. 1. Firebase Project 생성 및 google-services.json 등록하기 별다른거 없이 프로젝트 이름 넣어주시구요 저희의 목적은 FCM이니 애널리틱스는 나중에 몇분 안걸리구 끝납니다. 제일 아래 있는 Cloud Messaging을 눌러주시고 중앙에 안드로이드 아이콘 클릭! 정보를 쭉쭉 입력 google-services.json 파일 다운로드 후 등록 홈페이지에서 설정은 이제 끝났습니다. 2. Postman 설치하기 https://www.getpostman.com/ Postman | API Development Environment Postman is the only complete API developmen..