Androidの場合、現在のActivity
スタックをクリアして新しいActivity
を起動したい場合(例えば、アプリからログアウトしてログにActivity
を起動する)、2つのアプローチがあるようです。Activity.finishAffinity()vs Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
ターゲットAPIレベルが16を超えると、それに比べて利点はありますか?
1)完了アフィニティ
ActivityからfinishAffinity()
を呼び出します。 Activity.finishAffinity
2)インテントフラグ
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
finishAffinity()
アプローチは> = API 16
Intent
フラグアプローチに適しているが> = API 11
に適しています明らかにするために、現在のActivity
スタックをクリアする目的で、両方のアプローチが同様に機能するように見えます。私の質問は、人々が経験したことに問題があることであり、それゆえに、もう一方を選択する理由があるということですか?
あなたが言及している遅延(フリッカー)は、最初にfinishAffinity()に質問したものです。 IIRCでは、特にサムスンデバイスの中には、finishAffinity()を使用したときに非常に顕著なちらつきがありましたが、テストするデバイスがなくなりました。 –
この場合は、ビデオごとにフリッカーが発生したインテントバージョンでした。 – brindy
実際、私はそれを(ビデオに基づいて)ちらつきと呼ぶのか分からない。視覚的に何が起こるかについては、まったく異なるものがあります。 finishAffinityは上に表示されているように見えますが、インテントバージョンはスタックの一番上にある別のものを明らかにしているように見えます。 – brindy