大概就是 RecyclerView 里面有个 inner class 是 Observer 用来观察 Adapter 的数据变化。因为用的是非静态内部类,这个 Observer 和这个 RecyclerView 就会有互相引用。这个不是问题的关键因为一旦 RecyclerView 没有 Activity 或者 Fragment 引用了就会一起回收。
问题是,这个 Adapter 里面的 Observable 也是个内部类,而 Observable 会把传进来的 Observer 存起来。这样的话,如果我 Adapter 放在一个 Fragment 里面,然后这个 Fragment 放到 Backstack 里面去的时候 Adapter 本身应该是不会销毁的( onDestoy 没有调用),这样的话 RecyclerView 也不会被回收(尽管 onDestroyView 调用了)。
我目前是用了 RecyclerView.setAdapter(null)来解决这个问题,我想知道是不是我打开方式不对?