我有 2 个 Activity “A”和“B”。 我需要在不完成和重新创建的情况下在它们之间切换。
运行应用程序 -> 创建并显示 A -> 按下按钮 -> 创建并显示 B -> 按下按钮 -> 显示已存在的 A -> 按下按钮 -> 显示已存在的 B -> 依此类推。
当前解决方案:
private void toA() {
Intent intentToA = new Intent(this, A.class);
intentToA.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intentToA);
}
private void toB() {
Intent intentToB = new Intent(this, B.class);
intentToB.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intentToB);
}
它适用于 VM( native ,Genymotion - android 4.1)。 Activity 只会创建一次。当我在它们之间切换时,一切都很好——没有调用 onCreate 或 onDestroy。这正是我想要的。
但是当我在真实设备(Nexus 4 - android 4.3)上运行相同的应用程序时, Activity 在切换时被破坏并重新创建。
在虚拟机上:
Run app ->
A: onCreate, onResume ->
press button ->
B: onCreate, onResume ->
press button ->
A: onResume - >
press button ->
B: onResume ->
...
在真实设备上:
Run app ->
A: onCreate, onResume ->
press button ->
B: onCreate, onResume & A: onDestroy ->
press buttom ->
A: onCreate, onResume & B: onDestory ->
...
注意:Intent 标志对切换行为没有影响。
最佳答案
在AndroidManifest.xml
中将Activity的launchMode
设置为singleInstance
希望这对您有所帮助。
关于安卓。无需重新创建和完成即可在 2 个 Activity 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34784173/