-
Notifications
You must be signed in to change notification settings - Fork 663
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use strong references to callbacks in Stripe and CustomerSession (#863)
**Summary** `Stripe` and `CustomerSession` methods accept callback objects that typically hold references to `Activity` objects. The best practice in Android is that references to `Activity` objects should be weakly held for long-running background tasks, because the `Activity` may go away (e.g. user leaves activity before task is complete). The change was first introduced in #666. After this change, users began reporting that callback objects would mysteriously be garbage-collected by the OS. I was able to reproduce this as well, and found a work-around by moving anonymous inline classes to instance variables - see 2b74328. Android will GC objects that are no longer strongly referenced. When inlined, the callback objects were no longer strongly referenced once the method completed (e.g. in 2b74328, the left-side of `AddSourceActivity#onActionSave`); moving these objects to be instance variables meant that they were now strongly-referenced by the Activity. This explains why the GC issues were resolved with this change. In conclusion, the correct solution is to have the callback objects weakly-reference `Activity` objects, rather than weakly-reference the callback objects themselves. **Motivation** ANDROID-340
- Loading branch information
1 parent
6d5daac
commit 9804bcd
Showing
2 changed files
with
33 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters