2017-10-14 10 views
1

isFinishing()に連絡して、アクティビティがまだ存在していないかどうかを確認する必要があることを覚えておいてください。NullPointerExceptionが表示されますが、これは改造のチュートリアルには記載されていません。私もテストを行い、クラッシュは見られませんでした。これはすでに改造によって処理されていますか?はいの場合、改装は活動や断片化だけを処理しますか?レトロフィットを使用しているときに活動がまだ生きているかどうか確認する必要がありますか?

答えて

1

あなたはそれを処理する必要があります。あなたがアクティビティの内部で直接的にレトロフィットを使用している場合、NullPointerExceptionは発生しません。しかし、アクティビティが終了した後でも、ネットワークは引き続き使用され、コールバックは引き続き呼び出され、コールバックが終了するまでアクティビティが占めるリソースはメモリ内に残ります。

フラグメント内にretrofitを使用している場合は、コールバックでNullPointerExceptionが発生する可能性が高くなります。

Callオブジェクトの参照を取得し、onDestroy()メソッド内でcall.cancel()を使用するのが最善の方法です。

+0

私が覚えている奇妙なのは、アクティビティがまだ存在するかどうかを確認しなければならなかったが、今は例外がスローされない – user1865027

関連する問題