java - Adapter leaks memory? -
i have adapter uses activity context register , unregister listener.
activity mactivity; mybroadcastreceiver mreceiver; @override public void onattachedtorecyclerview (recyclerview recyclerview) { super.onattachedtorecyclerview(recyclerview); mactivity.registerreceiver(mreceiver, ...); } @override public void ondetachedfromrecyclerview (recyclerview recyclerview) { super.ondetachedfromrecyclerview(recyclerview); mactivity.unregisterreceiver(mreceiver); mactivity = null; }
although onattachedtorecyclerview gets called, detach method never, adapter leaks lot of memory after closing activity.(running noticeable in settings app)
what have do?
to safe, register receiver in activity. shouldn't hold on activity reference anywhere really...
if want register receiver adapter use interface.
public interface registerer { void register(); void unregister(); }
in activity:
mrecyclerview.setadapter(new recycleradapter(somedataset, new registerer() { public void register() { registerreceiver(mreceiver, ...); } public void unregister() { unregisterreceiver(mreceiver); } });
then can call interface methods adapter. don't see point of cramming view adapter though.
Comments
Post a Comment