在不破坏最底层活动的情况下进行少量活动

时间:2019-04-20 07:48:35

标签: android android-intent android-activity android-lifecycle

我做了一个简单的示例,其中包含3个活动:

  1. ActivityA

  2. ActivityB

  3. ActivityC

每个按钮上只有一个按钮。

    ActivityA上的
  • 按钮打开ActivityB

        val intent = Intent(this, ActivityB::class.java)
        startActivity(intent)
    
  • ActivityB上的
  • 按钮打开ActivityC

        val intent = Intent(this, ActivityC::class.java)
        startActivity(intent)
    
  • ActivityC上的
  • 按钮应该返回到ActivityA,但在此过程中杀死了ActivityB

        val intent = Intent(this, ActivityA::class.java)
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
        startActivity(intent)
    

它可以满足我的要求,并且登录后整个流程如下:

ActivityA onCreate()
ActivityA button clicked
ActivityB onCreate()
ActivityB button clicked
ActivityC onCreate()
ActivityC button clicked
ActivityB onDestroy()
ActivityA onDestroy()
ActivityA onCreate()
ActivityC onDestroy()

此解决方案的问题是重新创建ActivityA(销毁并创建)。 有没有办法恢复它?

免责声明: 当然,这只是一种简化的情况。由于我的应用中存在多种原因,我宁愿避免在点击方法上使用onActivityResult()finish()。我需要保留正确的后退按钮行为。

1 个答案:

答案 0 :(得分:2)

您做得差不多。为了避免重新创建活动,您缺少的是一个FLAG_ACTIVITY_SINGLE_TOP标志。

val intent = Intent(this, ActivityA::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)

有关它的更多信息here