0

Ion を使用してリクエストを処理し、そのonCompletedコールバックを使用してレスポンスを処理します。

私の問題は、このコールバック内で想定されていることを完了する前に、アプリが完全にフリーズすることです。クラッシュもエラーも何もありません。フリーズするだけです。

デバッグ時に、フリーズした後に次のコード行を実行することはありません。メソッド内のすべてのコードを削除しようとしhandleResponseましたが、別の時点でまだフリーズします。

これが私のコードの関連部分です(正確なコードではありません):

private void performSync() {
    Ion.with(mContext.get())
       .load(API_URL)
       .setHeader("Content-Type", "application/json")
       .setStringBody(json)
       .asString()
       .setCallback(new FutureCallback<String>() {
           @Override
           public void onCompleted(Exception e, String result) {
                 // Some code to map response.
                 ...

                 // Freezes inside this method.
                 handleResponse(myResponse);

                 // Freezes here if I remove the above code.
                 myService.sendBroadcast(MY_ACTION);
           }
       });
}

private void handleResponse(Object myResponse) {
    // Do something with my response (extract a list from it).
    ...

    // Process data.
    for (Object object : listFromResponse) {
       // Do stuff with the objects. Works fine until the very last object.
    }

    // Freezes before this line. It never gets here.
    PreferenceUtils.saveStringPreference(MY_PREFERENCE, someValue);
}

不正確なコードで申し訳ありません。本物を投稿することはできません。しかし、実際のコードは上記と同じ構造に従っているので、アイデアが得られるはずです。

私はこの問題を理解するのに苦労しています。スレッドの問題のように見えますが、Ion は非同期で動作するため、アプリがフリーズすることはありません。

4

1 に答える 1