일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- build
- 스튜디오
- 코루틴
- Android
- 안드로이드 스튜디오
- studio
- ADB
- Gradle
- 에러
- 안드로이드
- viewpager
- image
- 의존성주입
- dart
- Retrofit
- 안스
- 웹뷰
- Github
- 유튜브
- GIT
- 레트로핏
- Kotlin
- coroutine
- 안드로이드스튜디오
- 깃헙
- RecyclerView
- error
- MVVM
- WebView
- 코틀린
- Today
- Total
목록thread (3)
코딩하는 일용직 노동자
안드로이드 개발중 경험한 에러와 해결방법을 공유합니다. 앱실행 중에 아래와 같은 에러가 발생하면서 앱이 죽었습니다. java.lang.IllegalStateException: Must be called from main thread of fragment host Fragment에서 부모 Activity로 ViewPager의 페이지 이동을 시키려고 하는데 에러가 났습니다. public class AndroidBridge { @JavascriptInterface public void OnAppEvent(String data) { switch (event) { case "move_to_main": Fragment_Main.getInstance().mViewPager.setCurrentItem(1); break..
ViewModel 안에 만들어둔 MutableLiveData 변수의 value 를 바꿔주기 위해 .setValue() 나 .sendEvent() 를 사용하니 앱이 바로 죽습니다. 에러로그를 보니 메인쓰레드가 아닌 다른 쓰레드에서 MutableLiveData 의 값을 셋팅하다보니 발생한 에러입니다. (CoroutineScope 는 Dispatchers.IO 로 만들어서 사용중이었습니다.) 구글링을 해보니 아주 간편한 해결법이 있습니다. postValue() 로 값을 셋팅해주면 됩니다.
그동안 안드로이드 Java 에서 비동기 작업을 할때 많이 사용되던 AsyncTask 가 Android11 에서 deprecated 되었습니다. Kotlin 으로 개발할때는 Coroutine 을 사용하기 때문에 큰 불편함이 없겠지만, Java로 개발할 경우에는 AsyncTask 를 대체할 방법을 찾아야 합니다. 구글링을 해보면 AsyncTask 를 대체하기 위해 RxJava 를 이용한 처리를 추천하는 포스팅이 많습니다만, Rx에 익숙하지 않은 저로써는 다른 방법을 찾고 싶었습니다. 소개해드릴 비동기처리 라이브러리는 Needle 입니다. Java로 만들어진 안드로이드 멀티쓰레드 라이브러리입니다. 소스를 살펴보니 Executor와 Runnable 을 사용해서 만들어져 있습니다. 나온지 꽤 오래되었고 v1.0...