Kir*_*ill 5 android android-appcompat android-lifecycle android-fragments fragment-lifecycle
在更新到新的appcompat库之后,com.android.support:appcompat-v7:25.1.0
我在替换事务中的片段时获得了新的片段生命周期.
例如我有两个片段FrFirst
并FrSecond
用日志中onStart
和onStop
,并用我第一替换第一与第二,然后第二:FrFirst -> FrSecond -> FrFirst
.
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content, new FrSecond())
.commit();
Run Code Online (Sandbox Code Playgroud)
在以前的appcompat版本中,我可以读取此日志:
FrFirst:导航到第二个
FrFirst:停止
FrSecond:开始FrSecond:导航到第一个
FrSecond:停止
FrFirst:开始
在25.1.0中这个日志:
FrFirst:导航到第二个
FrSecond:开始
FrFirst:停止FrSecond:导航到第一个
FrFirst:开始
FrSecond:停止
所以现在onStart
呈现onStop
当前之前调用的片段.
为什么方法顺序改变了,它是支持库中的错误吗?
这是新appcompat的预期行为.如此处所述https://code.google.com/p/android/issues/detail?id=230415 这是一个
优化操作和推迟片段转换的新功能,这是一个副作用.
您可以通过调用FragmentTransaction.setAllowOptimization(false)来禁用片段操作优化.这会强制一切以正确的顺序发生,但也不允许优化操作.
因此,如果您想查看旧行为,可以使用禁用的优化替换片段:
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content, new FrSecond())
.setAllowOptimization(false)
.commit();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
680 次 |
最近记录: |