最近在做状态机时候使用了fragment的切换,开始以为简单的commit就可以完美处理了。
但是,晴天霹雳啊!!!
当切换到后台之后,网络请求返回里进行commit操作,app就会崩溃。而且屡试不爽。难道方案有问题?
带着悲痛的心情,踏上了搜索之路。。。
Fragment Transactions & Activity State Loss
“Failure Delivering Result ” - onActivityForResult
解决方法:
在onstop的时候置个状态,如果网络请求返回时发现activity已经stop,就不再执行commit操作。在activity进入onresume后,再请求网络获取之后进行commit切换。
@Override
protected void onResume() {
bStopped = false;
switchstate();
}
@Override
protected void onStop() {
bStopped = true;
}
public void switchstate() {
if (bStopped == false) {
// do commit
}
}