Closed Loren-Moon closed 7 years ago
嗯 其实我也发现了,之前有用户反映这个问题。 暂时不知道有什么比较好的办法,有一种思路就是将view的生命周期和presenter同步,好像有一个叫做rxlifecycler的裤子。不过我不会用rx这个系列(我还是个渣。。。)。
如果你找到了比较好的方法,麻烦也告诉我一下😃
@Override protected void onRestoreInstanceState(Bundle savedInstanceState) { TaskManager.getInstance().closeAll(); // 清空activity栈 Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName()); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); super.onRestoreInstanceState(savedInstanceState); }
我app暂时是这样解决的了,MainActivity里面添加这个,被回收应用再打开会走这个方法。= =我也没啥好办法,这样起码不会崩溃。我看看你推荐的那个先。
mFragment = Fragment.newInstance();
new Presenter(mFragment );
之前我也都这样写,看了这个问题后试了下自己的程序果然也崩了。
之后用了下面这种写法就没问题了。
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getSupportFragmentManager().putFragment(outState, "mFragment", mFragment );
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mFragment = (Fragment) getSupportFragmentManager().getFragment(savedInstanceState, "mFragment");
} else {
initFragment();
}
new Presenter(mFragment );
}
被回收之后重新取出来就行哦,怎么没想到这茬。cool @tzizi5566