PUT
インスタンスでRetrofit
メソッドを呼び出そうとしています。
_Response<UpdateUserProfileResponse> response = App.getService().updateUserProfile(//A good 26 parameters).execute();
_
updateUserProfile()
のパラメーターは、String、Boolean、および1つの_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
_
更新
問題を見つけました。問題を引き起こしている2つの_RealmList<BackgroundString>
_があります。両方のRealmListsを評価すると、次のようになります。
_Unable to evaluate the expression method threw 'Java.lang.IllegalStateException' exception.
_
この質問に出くわした他の人にとって、実際の問題はおそらくこれです: https://issuetracker.google.com/issues/3707819 すなわちMarshmallow/23(そしておそらく24)でのインスタント実行はAndroidランタイム。Android 8/26 +には公式の修正がありますが、ほとんどの人にとって、インスタント実行を無効にするだけで十分です。
また再:
https://github.com/square/retrofit/issues/1486
https://github.com/square/retrofit/issues/1506
新しい例外をスローします 'length = 1120; index = 2310 '、予期しない保留中の例外:Java.lang.ArrayIndexOutOfBoundsException:length = 1120;インデックス= 2310
Android NougatとOreoで正常に動作していますが、マシュマロで問題が発生していました。「インスタント実行」をオフにして修正しました。[ファイル]-> [設定]-> [設定]に移動して修正してください。ビルド、実行、展開->インスタント実行およびインスタント実行オプションを無効にする
私も同じ問題に直面しています:
無効にするInstant Run
問題を解決します。
以下のパスに従ってください:
設定->ビルド、実行、開発->
Instant Run
これをバックグラウンドで使用している場合スレッドまたは任意の新しいHandler()。postDelayed()次に、このAPI呼び出しをIスレッドで使用します。
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) {
}
});
}
});
このコードを試してください
たとえば私がしたように、コードをtrycatchブロックにラップします
Call<JsonObject> call = null;
try
{
call = apiService.getUserList(getUsersListRequestModel);
}
catch (Exception e)
{
e.printStackTrace();
}
}