マニフェストで singleTask または singleInstance アクティビティとして定義されていても、アクティビティが複数回作成されるという興味深い問題が発生しました。これを再現できる方法を次に示します。メイン アクティビティで次のように言います。
@Override
protected void onResume() {
Intent i = new Intent(MainActivity.class, SingleActivity.class);
startActivity(i);
}
私の SingleActivity には、次のものがあります。
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Log.i("SingleActivity", "onCreate " + System.identityHashCode(this));
...
}
マニフェストには、次のものがあります。
<activity android:name=".SingleActivity"
android:launchMode="singleInstance"
/>
ここで、アプリケーションを起動すると、問題ないように見えます。1 つのケースを期待してくださいSingleActivity
。. これは、ログに別の ID ハッシュ コードが表示されているため、私が知っていることです。MainActivity
MainActivity.onResume()
SingleActivity
起動モードが singleTask の場合も同様です。
唯一の回避策はオーバーライドするonBackPressed()
ことですが、それは醜い解決策のようです。
私は何が間違っているのだろうか