【发布时间】:2017-04-05 11:27:42
【问题描述】:
我有两个活动的简单应用程序。这是清单:
<application>
<activity
android:name=".ActivityA"
android:theme="@style/AppTheme.NoActionBar.Map">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".ActivityB"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="https://stackoverflow.com/"
android:scheme="http"
android:pathPrefix="/questions/ask"
/>
</intent-filter>
</activity>
</>
如您所见,当点击链接“https://stackoverflow.com/questions/ask”时 - 我的应用程序将打开第二个活动。 在 ActivityB 我重写 onBackPressed 方法:
override fun onBackPressed() {
if(isTaskRoot){
startActivity(Intent(this, MapActivity::class.java))
finish()
} else {
super.onBackPressed()
}
}
所以当第二个活动从链接开始并且我点击返回 btn 时,ActivityA 被打开并且 ActivityB 完成。
乍一看,一切看起来都很好,但如果在此之后我按下 home btn,然后从堆栈重新启动应用程序 - ActivityB 再次打开而不是 ActivityA。
请解释一下为什么会发生这种情况以及如何解决这个问题。谢谢!
更新 在ActivityB中onBackPressed之后,ActivityA被打开,然后我点击onBackBtn而不是HomeBtn,所以应用程序被关闭。在这种情况下,从堆栈 ActivityB 重新启动后打开。
【问题讨论】:
标签: android android-activity back-stack onbackpressed