我正在尝试在PUT
实例上调用Retrofit
方法:
Response<UpdateUserProfileResponse> response = App.getService().updateUserProfile(//A good 26 parameters).execute();
updateUserProfile()
中的参数是String,Boolean和一个List<MyObject>
的混合。当我调用此方法时,我收到以下错误:
Throwing new exception 'length=238; index=1366' with unexpected pending exception: java.lang.ArrayIndexOutOfBoundsException: length=238; index=1366
06-28 21:53:12.458 3928-6610/com.subby.development A/art: art/runtime/thread.cc:1329] at retrofit2.Response
更新
我发现了这个问题。有两个RealmList<BackgroundString>
导致了这个问题。当我评估两个RealmLists时,我得到:
Unable to evaluate the expression method threw 'java.lang.IllegalStateException' exception.
答案 0 :(得分:29)
对于其他在这个问题上绊脚石的人,最可能的实际问题是:https://issuetracker.google.com/issues/37078190 即在棉花糖/ 23(甚至24)上即时运行在Android运行时中存在问题。 Android 8/26 +具有官方修复程序,但是对于大多数人而言,禁用Instant Run应该足够了。
还:
https://github.com/square/retrofit/issues/1486
https://github.com/square/retrofit/issues/1506
答案 1 :(得分:14)
抛出新异常'length = 1120; index = 2310',带有意外的未决异常:java.lang.ArrayIndexOutOfBoundsException:length = 1120; index = 2310
在Android Nougat和Oreo上运行正常,但在棉花糖中却遇到了问题。我只是通过关闭“即时运行”来解决此问题。通过去做 文件->设置->构建,执行,部署->即时运行并禁用即时运行选项
答案 2 :(得分:8)
我也面临着同样的问题:
禁用Instant Run
解决了该问题。
遵循以下路径:
设置->构建,执行,开发->
Instant Run
答案 3 :(得分:1)
如果您在后台线程或任何新的Handler()。postDelayed()中使用此函数,请在 UI线程中使用此API调用。
runOnUiThread(new Runnable() {
@Override
public void run() {
APIClient.getAPIService().getEffects(Constants.apiKey).enqueue(new Callback<POJOCLASS>() {
@Override
public void onResponse(Call<POJOCLASS> call, Response<POJOCLASS> response) {
if (response.body().error.msg == null) {
}
}
@Override
public void onFailure(Call<POJOCLASS> call, Throwable t) {
}
});
}
});
尝试此代码
答案 4 :(得分:0)
将你的代码包装到try catch块中,就像我做的那样
Call<JsonObject> call = null;
try
{
call = apiService.getUserList(getUsersListRequestModel);
}
catch (Exception e)
{
e.printStackTrace();
}
}
答案 5 :(得分:0)
当我遇到这个问题时,我正在使用库的下一个版本:
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
毕业:
com.android.tools.build:gradle:4.1.3
并像这样初始化 Retrofit
实例:
Retrofit.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
但是将 GsonConverterFactory
初始化更改为 GsonConverterFactory.create(GsonBuilder().create())
解决了问题:
Retrofit.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create(GsonBuilder().create()))
.build()