Instead of developing your own method, I suggest you look at Functional Reactive Programming. Observables and friends were created exactly for the issue you describe. Also, you won't have to think too much about memory leaks as long as you play along the rules.
Here is a tutorial for starters: http://mttkay.github.io/blog/2013/08/25/functional-reactive-programming-on-android-with-rxjava/ But Google has even more to say about it: https://www.google.hu/search?q=android+rxjava
This is not a magic solution, and it's quite complex at first look but if you grasp the idea, then it will help make your software simpler and a lot safer.
Otherwise I don't see many issues with your proposed solution but it will be hard to keep the registrations consistent.