<activity
android:launchMode="singleTop"
android:name=".SingleTopActivity"
android:label="SingleTopActivity">
</activity>
点击按钮 跳转2次,
@Override
public void onClick(View view) {
// attemptLogin();
startActivity(new Intent(LoginActivity.this,SingleTopActivity.class));
startActivity(new Intent(LoginActivity.this,SingleTopActivity.class));
}
但是第二次也是 onCreate了并没有进入onNewIntent,请问这是为什么
自分で追加します
リーリーログを置けば分かります。 初めてアクティビティを開始したとき、2 番目のアクティビティはまったく開始されていません。最初のアクティビティを終了すると、この時点で 2 番目のアクティビティが開始されますが、この時点で 1 番目のアクティビティは破棄されているため、2 番目のアクティビティは開始されません。これは onCreate でのみ実行できます。
このコード行を起動アクティビティのインテントに追加します
リーリーandroid:launchMode="singleTop" の行を削除してください。
起動モードが SingleTask の場合、最初のインターフェースが強制終了されていない場合、onNewIntent() は 2 回目に開かれたときにのみ呼び出されます
このように SingleTopActivity を開始すると、スタックの最上位は SingleTopAcvitiy ではなく現在のアクティビティのままになります。SingleTop モードでは、開始するアクティビティがスタックの最上位にある必要があり、その後 SingleTopActivity を開始するため、onNewIntent が実行されます。 () は
と呼ばれます@idisfkj の言うとおりです。
最初に
startActivity()
を実行したとき、コードはすでにSingleTopActivity
のライフサイクルに入っており、2 番目のstartActivity()
はすぐには実行されず、 のようです。 は 2 回連続して開始されますSingleTopActivity
が、実際にはそうではありません。2 回目の開始の前に、SingleTopActivity
を終了して元のActivity
に戻る必要があります。