安卓。无需重新创建和完成即可在 2 个 Activity 之间切换

标签 android android-intent

我有 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/

相关文章:

android - Android 中的语音到文本转换

java - Android:使用 Intent 和 FileProvider 打开 Word 文档

android - 以编程方式打开特定的设置页面

android - ListView 在 android 中显示对象而不是行

java - 尝试对空对象引用调用虚拟方法 SupportMapFragment getMapAsync

Android Studio,应用停止工作

android - 将 Android Web 服务连接到本地主机

java - 如何在 Lambda 表达式中定义 Intent

android - 开始谷歌地图 Intent

android - 将带有名称值对的数组列表从一个 Activity 传递到另一个 Activity ?