1. ANSATZ 1
Wenn wir Ihr Ansatz zu folgen, können Sie erreichen, was Sie wollen, indem kann das Hinzufügen mit @ Antwort des shuvro auf diese Weise:
public class MainActivity extends AppCompatActivity {
private List<Intent> intents = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, MainActivity.class);
intents.add(intent);
startActivity(intent);
}
});
}
@Override
public void onBackPressed() {
if (!intents.isEmpty()) {
Intent intent = intents.get(0);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
}
}
Und in der AndroidManifest.xml yo u sollte diese Eigenschaft auf Ihrer Aktivität hinzufügen:
android:launchMode="singleInstance"
2. ANSATZ 2
Ich denke, dieser Ansatz ist ein Reiniger ein. Sie können für jeden Bildschirm eine Aktivität erstellen, die eine BaseActivity mit dem gemeinsamen Code erweitert. Wenn Sie also Activity1 öffnen (das ist der Stamm und sollte als singleInstance gestartet werden) und Activity2 würden Sie sie ohne Flags öffnen. Aber wenn Sie Activity3 öffnen müssen, sollten Sie die Flags hinzufügen.
Von MainActivity öffnen Activity1:
Intent intent = new Intent(MainActivity.this, Activity1.class);
startActivity(intent);
Von Activity1 öffnen Activity2:
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);
Von Activity2 öffnen Aktivität3:
Intent intent = new Intent(Activity2.this, Activity3.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
Können Sie den Intent-Code für oben eingeben? – Shaishav