情况是,我通过以下方式从我的routeactivity中调用一个活动:
arrived.observe(this, new Observer<Boolean>() {
@Override
public void onChanged(Boolean aBoolean) {
if(aBoolean==true){
Intent intent = new Intent(MyApplication.getAppContext(), RouteCompleteActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_up, R.anim.do_nothing);
finish();
}
}
});
当我通过以下方式结束活动时,这很好:
Intent navIntent = new Intent(MyApplication.getAppContext(), NavigationStartActivity.class);
navIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(navIntent);
finish();
这会让我回到我的主要导航开始活动,然后当我再次选择返回到我的routeactivity原始时,routecompleteactivity仍然在上面吗?所以我得到的不是routeactivity,而是routeCompleteTActivity,如果我按下back键,它就会转到routeactivity??好像它还记得什么背影?有人能解释一下吗?
1条答案
按热度按时间baubqpgj1#
我假设您使用的是viewmodel或存储库中的livedata,它保留了它的值。案例如下:
arrived
有一个true
价值与onChanged
将被调用。下一次routeactivity观察到达时,onchanged将再次被调用,因为它已经有一个值和另一个值startAcrivity
将被调用。一个简单的解决方案是使用SingleLiveEvent
相反,这是谷歌很久以前创建的链接它只是简单的呼叫
onChange
设置新值时。我还建议看一看这篇文章,其中对它进行了更深入的描述