Appsee’s Android documentation states that its ‘start(…)’ method should be called only from an Activity’s onCreate() or onResume() handlers only.
Why is that?
Short version: The reason is to require proper lifecycle handling (as Appsee runs in a background thread).


Longer version: First, a primer on Android threads: In order to ensure Appsee is functioning correctly as well as not hindering the app’s performance, Appsee is doing all of its work in a background thread, but communicates with the app via the app’s UI thread. This is done so that we can guarantee Appsee’s footprint to be as minimal as possible while providing the app’s developers with the convenience of one-threaded application as the case may be.
While Appsee’s various modules are run in a background thread, it listens to various foreground events that are fired inside the app’s context. Events such as activities being created, being suspended or resumed, and being destroyed, are crucial to Appsee’s holistic understanding of the app, and to its impeccable analytics.
Appsee works best if it is being invoked in tandem to these events being fired, as it needs to run when activities are run.
And what better way to analyze the app’s activities than to be run when they run?