保留Dagger 2子组件

时间:2016-02-24 19:11:28

标签: android dependency-injection dagger-2

是否可以通过配置更改为活动保留Dagger 2子组件? 似乎只有两种可能的解决方案是:

  • 使用保留的片段或
  • 保存子组件中对象的状态,并使用savedInstanceState Bundle恢复它。

两者似乎都是凌乱的解决方案 - 有没有人用更清洁的解决方案来解决这个问题?

1 个答案:

答案 0 :(得分:2)

您的问题听起来像是您不应该尝试做的事情。

创建并依赖于活动的组件可能会引用该活动。保留该组件听起来像是内存泄漏的主要原因。

当您的配置发生变化时,活动将被销毁,与之相关的所有内容也应该被销毁。

所以你提到的 - 保存包function shuffleJSON(input) { var boys = [], girls = []; for (var i = 0; i < input.length; i++) { if (input[i].npcSex === 'boy') { boys.push(input[i].npcName); } if (input[i].npcSex === 'girl') { girls.push(input[i].npcName); } } boys = shuffle(boys); girls = shuffle(girls); for (var i = 0; i < input.length; i++) { if (input[i].npcSex === 'boy') { input[i].npcName = boys.shift(); } if (input[i].npcSex === 'girl') { input[i].npcName = girls.shift(); } } return input; } 中的状态并再次重新创建它 - 听起来像是对我来说最干净的解决方案。