Repository navigation
Summary
Ad loading and rendering relied on shared placement caches, repeated metadata collection, and disabled image caching. These paths added work when ads appeared in Fragments and RecyclerView rows.
- Introduce cancellable loading APIs returning explicit LoadedAd instances.
- Add lifecycle ownership and exclusive display ownership for safe rebinding.
- Replace persistent creative handoff with a bounded memory cache.
- Enable image caching and decode images at appropriate dimensions.
- Cache device metadata and bound concurrent requests.
- Preserve tracking identity across rebindings and disposal.
- Use Duration for timeouts, lifetimes, and domain-model timer fields.
- Update examples and add a migration guide.