 <blockquote> <p>How can Interface be implemented, by which it can be accessible from all the activities, and called from any of the activity to call SDK API...</p> </blockquote> <p>The interface instance can be made a context singleton (lazily instantiated). So you may have a <code>static getInstance(Context)</code> to get an implementation of the interface. </p> <p>OR you can be using a Dependency injection framework (Roboguice, Dagger etc) and just annotate the class with <code>@Singleton</code>etc. This is useful if you would like to switch implementations of same interface dynamically.</p> <p>OR you can extend <code>Application</code> class with your own <code>App</code> class, mention the same in manifest's <code>&lt;application&gt;</code> tag. Now <code>App</code> class will become app wide singleton and can one-time initialize and expose global objects from its <code>onCreate()</code> method.</p> <blockquote> <p>.., and also it provides response to calling activity only (Synchronous or Asynchronous).</p> </blockquote> <p>I'd advise to stick with single a pattern. Also UI components like Activities, Fragments and View are exposed to a risk of being frequently destroyed and re-created. So, It is a great responsibility of notifying the SDK to not to call back for a UI that is going away.</p> <pre><code>RequestHandle handle = mySDK.doSomeAsyncReqyest(myInputParameters, new Callback&lt;Data&gt;(){ @Override public void onResult(Data d, Exception e){ // handle results } }); </code></pre> <p>And always track the requests and remember to :</p> <pre><code>handle.cancel(); </code></pre> <blockquote> <p>How can Interface be kept alive and on going when application is not active or in background (Service not proffered), so that it can get notification from SDK.</p> </blockquote> <p>As of now, a "sticky" Service equipped with a boot receiver is the only way you can let android not permanently destroy a background process of an app. Even then, the process will still be stopped if resources are low, and re-started when resources are free.</p> <p>This service can post notifications in status bar (by becoming a foreground service), from where, user can again be re-directed to a specific part of your app.</p> <blockquote> <p>How can Interface broadcast notifications received from SDK to all the available activities (is Broadcast Receiver mechanism ok for this?)?</p> </blockquote> <p>Android offers <code>LocalBroadcastManager</code> to broadcast events local to the app. Also there are "bus" implementations such as <code>EventBus</code> and <code>Otto</code> that can help send events from one object to another without them having direct references of each other.</p> <p>If you are looking for overall async architecture hints, you can explore how the framework called <code>RoboSpice</code> is implemented.</p>