LANGUAGE
-
[Study] 코틀린 동시성 프로그래밍 - 3장. 라이프 사이클과 에러 핸들링LANGUAGE/KOTLIN 2022. 9. 5. 23:06
2장에서는 안드로이드 UI 스레드에서 네트워크를 요청하면 블로킹이 발생하여, 네트워크에서 코루틴을 사용하고 결과만 UI 스레드에서 합쳐서 쓰는 것을 익혔다 3장에서는 두가지 유형의 비동기 작업을 살펴본다 Job Deferred 비동기 함수를 쉽게 나눠 볼 수 있는 두가지 결과가 없는 비동기 -> job 로그를 기록하고 전송하는 것을 백그라운드 작업으로 하는데, 이것이 완료되고 있는지 여부는 검사하지 않는다 결과를 반환하는 비동기 -> deferred 결과를 활용해야되는 경우 두가지 경우 다 예외가 발생하거나, 해당작업이 필요하지 않을때 취소를 할 수 있음 Job Fire And Forget : 예외가 발생하지 않는한 대기하지 않는다. fun main(args: Array = runBlocking { va..
-
[Study] 코틀린 동시성 프로그래밍 - 2장. 코루틴 인 액션LANGUAGE/KOTLIN 2022. 8. 12. 17:43
안드로이드의 UI 스레드 CallFromWrongThreadException 안드로이드는 뷰 계층을 생성하지 않은 스레드가 관련 뷰를 업데이트하려고 할때 를 발생 시킨다 UI 스레드만이 뷰 계층을 생성할 수 있는 스레드이며 뷰를 업데이트 할 수 있다. NetworkOnMainThreadException 자바에서의 네트워크 동작은 기본적으로 블로킹된다. UI 스레드에서 네트워크 작업을 수행할 때마다 안드로이드는 중단된다. 백그라운드에서 요청하고, UI 스레드에서 업데이트할 것 두 가지를 합쳐서 서비스 호출을 구현하려면 백그라운드 스레다가 웹 서비스를 호출하고, 응답이 처리된 후에 UI 스레드에서 업데이트 하도록 해야 한다. 스레드 생성 코틀린은 스레드 생성 과정을 단순화해서 쉽고 간단하게 스레드를 생성할 ..
-
[Study] 코틀린 동시성 프로그래밍 - 1장 Hello, Concurrent World!LANGUAGE/KOTLIN 2022. 8. 12. 17:40
프로세스, 스레드, 코루틴 애플리케이션을 시작할 때 운영체제는 프로세스를 생성하고 여기에 스레드를 연결한 다음, 메인 스레드(main thread)로 알려진 해당 스레드를 시작한다. 프로세스 프로세스는 실행 중인 애플리케이션의 인스턴스다. 애플리케이션은 여러 프로세스로 구성될 수 있다. 스레드 실행 스레드는 프로세스가 실행할 일련의 명령을 포함한다. 스레드가 끝나면 프로세스의 다른 스레드와 상관없이 프로세스가 종료된다. fun main(args: Array) { doWork() } 기본적인 애플리케이션이 실행되면 main() 함수의 명령 집합이 포함된 메인 스레드가 생성된다. doWork()은 메인 스레드에서 실행되므로 doWork()이 종료되면 애플리케이션의 실행이 종료된다. 스레드 안에서 명령은 한 ..
-
[Android] Room cannot verify the data integrityLANGUAGE/ANDROID 2021. 5. 18. 11:52
새로운 기능 개발 하는 도중에 새로 추가한 DB 구조르 변경해야 할 경우가 생긴다. 그럴때 만날 수 있는 에러가 아래와 같다. java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number. 해결 방법으로는 버전명을 올리고 fallbackToDestructiveMigration() 를 사용하는 방법이 있다. 하지만 개인적으로 새로운 기능에 들어가는 부분이라 버전 정보를 올리고 싶지 않은 마음이 있었다. 그래서..
-
[Android] java.lang.IllegalArgumentException: Service not registered: com.google.android.gms.measurement.internal.zzji@xxxLANGUAGE/ANDROID 2020. 10. 16. 14:15
2020년 11월 15일 이후 부터는 이전 버전의 Fabric SDK의 지원이 중단된다. 그래서 최신버전의 Firebase Crashlytics SDK로 업데이트를 진행했다. https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=android Firebase Crashlytics SDK로 업그레이드 iOS Android Unity 이제 새로운 공식 Firebase Crashlytics SDK를 사용하여 앱에서 Crashlytics를 설정할 수 있습니다. 이 SDK는 다른 Firebase 제품과의 일관성이 향상되었고 보다 직관적으로 사용할 수 있는 개선� firebase.google.com 업데이트 작업은 변경사항은 많지 않아 적용에는 큰 어..
-
[Android] Webview Geolocation 사용하기LANGUAGE/ANDROID 2020. 8. 24. 19:01
안드로이드 웹뷰를 통해 지도앱이나 위치정보를 사용하는 웹페이지를 이용할 경우가 있는데 단말기의 GPS를 통해 얻은 위치정보를 전달해줘야 합니다. 별 다른 웹뷰 설정이 안되있는 상태라면 위 이미지의 좌측 상단의 현재위치 버튼 클릭시 정상 동작을 하지 않을 것입니다. - Geolocation 웹에서는 HTML5 Geolocaion API를 사용하여 위치정보를 요청합니다. 그럼 안드로이드 웹뷰에서는 아래와 같은 코드 설정을 통해 응답처리가 가능합니다. webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setGeolocationEnabled(true); webView.setWebChromeClient(new WebChromeClien..
-
외부 라이브러리 추가시 AndroidManifest.xml 병합LANGUAGE/ANDROID 2020. 7. 8. 16:48
최근 외부 업체 라이브러리를 추가하여 기능 개발중 전혀 연관없는 공인인증서 복사 부분에서 에러가 발생하였다. 라이브러리 추가 전 브랜치 코드에서는 정상적으로 동작하여 이번 작업중 영향을 미칠 부분을 찾아보니 AndroidManifest.xml이 가장 유력하였다. 상용 서비스들은 대다수 현재 app 소스 말고도 여러 라이브러리들을 쓰고 있다. 그런 여러 라이브러리에 있는 AndroidManifest.xml을 포함하여 APK를 만들때 하나의 AndroidManifest.xml을 만든다. 나의 경우 파일 저장이 안되는 문제여서 android.permission.WRITE_EXTERNAL_STORAGE 쪽 영향이 있을것이라 예상되었다. 라이브러리의 AndroidManifest.xml를 확인해 보니 해당 퍼미션에..
-
[Kotlin] object 익명 클래스, 무명 객체 [anonymous object] 에서 View 접근하기LANGUAGE/ANDROID 2020. 6. 19. 13:41
화면에 다이얼로그를 띄우기 위해 아래와 같이 코드 작성을 했습니다. (TestDialog는 DialogFragment를 상속받습니다.) TestDialog().apply { arguments = bundle onTestListener = object : TestDialog.OnTestListener { override fun onTestClick() { textView.text = "Click Event" } } show(supportFragmentManager, "TestDialog") } 실행 시켜보면 아래와 같은 NullPointException이 발생합니다. java.lang.NullPointerException: Attempt to invoke virtual method 'android.view..