Blueshift Android SDK allows you to send the events in two different ways. Batched and real-time. You can specify the type of the event when logging it using the last argument of the Event API methods.
Batched events are sent using the bulk event API along with the other events. They are added to a persistent queue which ensures that they are not lost if the user force quits the app. Batches of 100 events are created from the queue every 30 min (or the time interval configured during SDK set-up) and sent to Blueshift using the Bulk Events API called from non UI blocking background thread.
To optimize battery and network we recommend using a time interval that in sync with the Android Alarm Manager. This would ensure that your application doesn't wake-up the radio.
Your application may prefer sending certain events (for eg. Purchase) real-time to Blueshift. The SDK may store these events in a queue if no network is available. In this situation, the events are sent as a part of the next batch of events, as soon as network is available.
Note: Some of the events tracked by the Blueshift Android SDK are sent as batched events. (Ex: app_open). But, the notification tracking events are always sent as real-time.