我在我的应用程序中使用了Conductor 框架。
该应用程序通常固定为纵向状态,但我有 2 个Controllers
使用ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
并响应设备方向变化
Controller
A - 显示所拍摄图像的摘要Controller
B - 是相机交互
所以当A启动时,它会立即启动B并在拍摄图像后显示摘要。
A持有一个RecyclerView
使用的FlexboxLayoutManager
(当我尝试用简单的LinearLayoutManager
没有改变的情况下替换布局管理器时)
我有 3 个工作正常的流程:
- 设备在纵向-> A启动 -> B启动 -> 拍摄图像 -> B关闭 -> 图像显示在A
- 设备在横向-> A启动 -> B启动 -> 拍摄图像 -> B关闭 -> 图像显示在A
- 设备处于纵向-> A启动 -> B启动 -> 设备方向更改为横向-> 拍摄图像 -> 方向更改为纵向-> B关闭 -> 图像显示在A
但是这种情况失败了:
设备处于纵向-> A启动 -> B启动 -> 设备方向更改为横向-> 拍摄图像 -> B关闭 -> 图像不在A中显示
在所有流程中,我看到adapter
知道新项目,并且getItemViewType
,onCreateViewHolder
并onBindViewHolder
以正确的位置调用
失败的流程实际上是我作为用户最自然的流程:(
- 有谁知道发生了什么?
- 您能否建议其他调查方向?
更新:
- 回收站视图定义为
android:layout_height="wrap_content"
android:layout_height="match_parent"
在使用作品时更改为LinearLayoutManager
(看起来很难看)- 将其更改回
FlexboxLayoutManager
之前的所有流程都会失败
因此,我现在正在FlexboxLayoutManager
查看是否可以轻松解决此问题-我认为我的流程中实际上不需要回收站视图