Open smileToWxm opened 2 years ago
刚好这2天升级了下Appcompat版本,准备对 Result API下手 就看到作者的文章,整体下来受益很大。昨天按照示例试验了下,有几个疑问? 1、在 onActivityCreated回调里注册监听fragment的生命周期时,registerFragmentLifecycleCallbacks方法的 recursive参数传的是false,这样若是在fragment里在弹出dialogFragment或加载子fragment时就不会触发回调 2、在 onActivityDestroyed回调里实现反注册 unregisterFragmentLifecycleCallbacks 时会导致 接收不到fragment结束相关的生命周期比如onFragmentDetached。通过日志发现 回调是先走完 onActivityDestroyed 再去调用fragment相关回调。若此时实现 unregisterFragmentLifecycleCallbacks那么后续就不会收到相应的回调,那也就无法释放存放于DeMonActivityCallbacks内的临时缓存 resultMap。经验证好像无需进行 反注册 unregisterFragmentLifecycleCallbacks 3、采用 className加时间戳 作为key并存放于 intent中的方式让我眼前一亮,不过 若是在 singleTask配合 onNewIntent 模式下,有些人会直接使用 setIntent(intent); 来对数据进行接收。 这样就会导致 key值的丢失,这样 在 onActivityDestroyed就无法移除监听 4、是否可以采用 ArrayMap<ActivityResultCaller, DeMonActivityResult> mResultArrayMap 的形式作为 DeMonActivityResult的临时缓存?fragment同理
result.zip
这几个问题我确实没考虑到。
刚好这2天升级了下Appcompat版本,准备对 Result API下手 就看到作者的文章,整体下来受益很大。昨天按照示例试验了下,有几个疑问? 1、在 onActivityCreated回调里注册监听fragment的生命周期时,registerFragmentLifecycleCallbacks方法的 recursive参数传的是false,这样若是在fragment里在弹出dialogFragment或加载子fragment时就不会触发回调 2、在 onActivityDestroyed回调里实现反注册 unregisterFragmentLifecycleCallbacks 时会导致 接收不到fragment结束相关的生命周期比如onFragmentDetached。通过日志发现 回调是先走完 onActivityDestroyed 再去调用fragment相关回调。若此时实现 unregisterFragmentLifecycleCallbacks那么后续就不会收到相应的回调,那也就无法释放存放于DeMonActivityCallbacks内的临时缓存 resultMap。经验证好像无需进行 反注册 unregisterFragmentLifecycleCallbacks 3、采用 className加时间戳 作为key并存放于 intent中的方式让我眼前一亮,不过 若是在 singleTask配合 onNewIntent 模式下,有些人会直接使用 setIntent(intent); 来对数据进行接收。 这样就会导致 key值的丢失,这样 在 onActivityDestroyed就无法移除监听 4、是否可以采用 ArrayMap<ActivityResultCaller, DeMonActivityResult> mResultArrayMap 的形式作为 DeMonActivityResult的临时缓存?fragment同理