MainActivityにあるapiButtonを押したらAPI呼び出しとボタンの無効化と画面の遷移とMainActivityのfinishを行うプログラムを作成しています。
画面遷移した後このMainActivityは破棄され、Activityの破棄がされた場合にはボタンの有効化を行うというコードを書いたのですが、想定と違った動きをして調べてみても疑問を解決できなかったので質問させて頂きました。
私の予想ではViewを保持するActivityが破棄されているので参照する事ができずクラッシュすると思います。
ですが実行した結果finishをした場合の条件を通りボタンの有効化処理が動いたにも関わらずアプリがクラッシュしませんでした。
初心者でまだ認識に間違いがあると思うので、どなたか詳しい方
何故Activityを破棄してもViewを参照する処理でクラッシュしないのか、ご教授頂けると幸いです。
@Override public void onClick(View v) { apiButton.setEnabled(false); Log.d("#!", "onClick: "); Call<ResponseJson> btc = service.callSampleApi(); Intent Intent = new Intent(v.getContext(), SubActivity.class); startActivity(Intent); finish(); btc.enqueue(new Callback<ResponseJson>() { @Override public void onResponse(Call<ResponseJson> call, Response<ResponseJson> response) { Log.d("#!", "onResponse"); if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED) || isFinishing()) { Log.d("#!", "ライフサイクル×" + String.valueOf(isFinishing())); apiButton.setEnabled(true); } } @Override public void onFailure(Call<ResponseJson> call, Throwable t) { Log.d("#!", "失敗"); } }); }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/30 09:08
2020/01/30 11:11 編集
2020/01/31 01:15