e:java.lang.IllegalStateException:后端内部错误:文件外观代码生成期间发生异常(Kotlin)
在我的android应用程序中,我使用SuspendCorroutine将volley(android的HTTP库)回调封装在Kotlin Corroutine中 这是我的功能e:java.lang.IllegalStateException:后端内部错误:文件外观代码生成期间发生异常(Kotlin),java,android,kotlin,kotlin-coroutines,Java,Android,Kotlin,Kotlin Coroutines,在我的android应用程序中,我使用SuspendCorroutine将volley(android的HTTP库)回调封装在Kotlin Corroutine中 这是我的功能 private suspend fun requestManger( url: String, method: Int, body: JSONObject?) = suspendCoroutine<Int> { continuation -> val queue = V
private suspend fun requestManger(
url: String,
method: Int,
body: JSONObject?) = suspendCoroutine<Int> { continuation ->
val queue = Volley.newRequestQueue(applicationContext)
val request = object : JsonObjectRequest(method, url, body,
Response.Listener { response ->
Log.d(TAG, "doWork: $response")
continuation.resume(1)
},
Response.ErrorListener { error ->
Log.e(TAG, "doWork: error is", error)
continuation.resume(0)
}) {
override fun getHeaders(): MutableMap<String, String> {
val params = HashMap<String, String>()
params["Content-Type"] = "application/json"
params["Authorization"] = "$idToken"
return params
}
}
queue.add(request)
}
private-suspend-fun-requestManger(
url:String,
方法:Int,
body:JSONObject?=suspendCoroutine{continuation->
val queue=Volley.newRequestQueue(applicationContext)
val request=object:JsonObjectRequest(方法、url、正文、,
Response.Listener{Response->
Log.d(标记“doWork:$response”)
续.简历(1)
},
Response.ErrorListener{error->
Log.e(标记“doWork:error is”,error)
继续。继续(0)
}) {
重写fun getHeaders():MutableMap{
val params=HashMap()
参数[“内容类型”]=“应用程序/json”
参数[“授权”]=“$idToken”
返回参数
}
}
queue.add(请求)
}
但是当我尝试构建它时,它给了我这个错误
e:java.lang.IllegalStateException:后端内部错误:文件外观代码生成期间发生异常
值得注意的是,仅当我在响应中使用continuation对象时,才会出现此错误。ErrorListener(即使我键入continuation而未调用任何方法,例如:resume、resumeWithException等,也会出现此错误)
如果我不使用它,错误就会消失,但我不想在出现错误时永远挂起我的函数我知道现在回答这个问题已经太迟了,我也没有很好的答案,但我刚刚通过截击,创建了一个从JsonObjectRequest继承的匿名对象,得到了这个确切的错误,甚至像您那样覆盖getHeaders 但在我的例子中,我根本没有使用延续。我也不完全确定是什么修复了它,尽管我最终“修复”的问题是,我创建了两个继承自JsonObjectRequest的对象,但第二个对象是在Response.Listener回调中创建的 在代码中,它看起来有点像这样:
val request = object : JsonObjectRequest(method, url, body,
Response.Listener { response ->
...
val nestedRequest = object : JsonObjectRequest(method2, url2, body2,
Response.Listener { response ->
...
},
errorListener) {
override fun getHeaders(): MutableMap<String, String> {
...
return params
}
}
queue.add(nestedRequest)
},
errorListener) {
override fun getHeaders(): MutableMap<String, String> {
...
return params
}
}
queue.add(request)
fun doWork(response: JsonObject) {
...
val nestedRequest = object : JsonObjectRequest(method2, url2, body2,
Response.Listener { response ->
...
},
errorListener) {
override fun getHeaders(): MutableMap<String, String> {
...
return params
}
}
queue.add(nestedRequest)
}
val request = object : JsonObjectRequest(method, url, body,
Response.Listener { response ->
doWork(response)
},
errorListener) {
override fun getHeaders(): MutableMap<String, String> {
...
return params
}
}
queue.add(request)
val-request=object:JsonObjectRequest(方法、url、正文、,
Response.Listener{Response->
...
val nestedRequest=object:JsonObjectRequest(method2、url2、body2、,
Response.Listener{Response->
...
},
错误侦听器){
重写fun getHeaders():MutableMap{
...
返回参数
}
}
queue.add(nestedRequest)
},
错误侦听器){
重写fun getHeaders():MutableMap{
...
返回参数
}
}
queue.add(请求)
最终起作用的修复方法只是将嵌套对象创建移出,并在另一个函数中执行该工作
大概是这样的:
val request = object : JsonObjectRequest(method, url, body,
Response.Listener { response ->
...
val nestedRequest = object : JsonObjectRequest(method2, url2, body2,
Response.Listener { response ->
...
},
errorListener) {
override fun getHeaders(): MutableMap<String, String> {
...
return params
}
}
queue.add(nestedRequest)
},
errorListener) {
override fun getHeaders(): MutableMap<String, String> {
...
return params
}
}
queue.add(request)
fun doWork(response: JsonObject) {
...
val nestedRequest = object : JsonObjectRequest(method2, url2, body2,
Response.Listener { response ->
...
},
errorListener) {
override fun getHeaders(): MutableMap<String, String> {
...
return params
}
}
queue.add(nestedRequest)
}
val request = object : JsonObjectRequest(method, url, body,
Response.Listener { response ->
doWork(response)
},
errorListener) {
override fun getHeaders(): MutableMap<String, String> {
...
return params
}
}
queue.add(request)
fundowork(响应:JsonObject){
...
val nestedRequest=object:JsonObjectRequest(method2、url2、body2、,
Response.Listener{Response->
...
},
错误侦听器){
重写fun getHeaders():MutableMap{
...
返回参数
}
}
queue.add(nestedRequest)
}
val request=object:JsonObjectRequest(方法、url、正文、,
Response.Listener{Response->
道具(回应)
},
错误侦听器){
重写fun getHeaders():MutableMap{
...
返回参数
}
}
queue.add(请求)