와이즈 비즈가있다 POST 요청을 서버에 호출하는 함수입니다. 서버에서받은 정보를 표시하기 위해 활동의 일부 텍스트를 구성하고 싶습니다.
suspend
suspend fun retrieveInfo():String
안에서 전화를 했어요
onCreate
하지만 런타임에 충돌합니다.
onResume
runBlocking {
retrieveInfo()
}
이 일시 중단 호출을 어디에 넣을 것이라고 생각합니까 (활동 수명주기의 어느 부분에서)?
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.augmentedimage/com.google.AugmentedImageActivity}: android.os.NetworkOnMainThreadException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3086)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3229)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
이외의 다른 것을 사용해야합니까
?
runBlocking
- 답변 # 1
관련 자료
- Android Studio의 기본 활동 Java 파일에 코드를 작성할 수 없습니다
- (android) DialogFragment에서 Activity로 데이터를 보내는 방법은 무엇입니까?
- ViewPager2/TabView의 조각을 기반으로 Android 활동의 제목을 어떻게 변경할 수 있습니까?
- unity3d - 맨 앞으로 가져 오기 전에로드 할 두 번째 Android 활동을 백그라운드에서 시작합니다
- java - unity - unity에서 컴패니언 객체 내에서 android kotlin 함수 호출
- java - android studio - 명시 적 활동 클래스를 찾을 수 없지만 androidmanifestxml에 이미 선언 된 활동
- kotlin - 호출자 기능을 차단하지 않고 다른 일시 중지 기능에서 일시 중지 기능을 호출하는 방법은 무엇입니까?
- 내 앱이 백그라운드에있는 경우 Android OS가 singleTop 활동의 새 인스턴스를 생성하지 않는 이유는 무엇입니까?
- 다른 Android 활동을 포 그라운드로 푸시
- android : kotlin에서 봉인된 클래스 속성을 처리하는 올바른 방법
- Android의 Coroutine에서 Timeout으로 작업하는 방법
- android : 커스텀 코루틴 범위는 정확히 무엇입니까?
- android : 다중 코루틴 지연이 있는 테스트 기능
- android : 방출된 값을 기반으로 다른 반환 유형으로 흐름을 연결하고 결과를 수집하는 방법은 무엇입니까?
- Kotlin/Android에서 간단한 HTTP 요청을 수행하는 방법은 무엇입니까?
- android : Kotlin 코루틴을 사용하여 BLE 콜백 교체
- android : 흐름 함수 내부의 룸 데이터베이스 작업
- Android에서 코루틴을 사용할 때 다른 결과를 표시하는 이유
- android : 동일한 비동기 블록 또는 개별 블록에서 여러 장기 실행 작업
기본적으로
runBlocking
서 스펜 딩 코드block
를 실행합니다. 스레드runBlocking
에서 에 전화했다.따라서
.runBlocking
를 불렀다면Activity
에서 콜백이 중단되면 메인 스레드에서 실행되어네트워크에 액세스 할 수 없습니다 (서버 조회)그 통화를 위해 코 루틴 블록에서 디스패처를 전환해야합니다. 코드의 가장 간단한 수정은 실행을
<시간>Dispatchers.IO
로 옮기는 것입니다. .그 말은 두 가지를 제안합니다 (질문과 직접 관련이 없음) :
<올>와이즈 비즈 읽기 (이 부분과 다음 부분)
2.
Coroutines on Android
를 사용하지 마십시오 귀하의 경우에는 올바른runBlocking
를 정의하십시오.job
를 사용하십시오.job.launch{}