Abstract
Last Updated: February 23, 2014
The document contains general overview YotaPhone software architecture and describesdetails of Back Screen Activity application lifecycle. The document is intended to third–party developers of Back Screen applications.
YotaPhone Software Architecture
YotaPhone software architecture follows the rules common for Android based mobile devices.Please, see details on Fig. 1

Figure 1. YotaPhone Software Architecture
Figure below represents architecture components necessary for applications development andhow they interact with each other.

Figure 2. Architecture components necessary for applications development.
Applications Layer
Applications Layer is a main place of interest for the third–party developers. Any third–party application shall be installed within this layer only.
Applications Layer is on top of Google Applications and Services Layer and contains customapplications such as Organizer, Notepad, Wallpapers, etc. It interacts with SDK in bothdirections.
SDK
SDK is intended to be used by developers for their YotaPhone applications.The SDK supports a number of high-level services to front–end applications in the form of Java classes. These services are opened for Back Screen applications developers. SDK exposes bi–directional interfaces to custom applications and services.
YotaPhone Manager
It is an important part of Architecture. YotaPhone Manager controls the interaction between applications and the lower-level methods. Any 3rd party interact with YM via SDK.
YotaPhone Daemon
Yota Daemon is low–level software instance and is responsible for transmitting commands from Applications/Services via YotaPhone Manager to Eink Controller Driver. Draw a figure on E-Ink display, for example.
Eink controller driver
Vendor’s Eink Controller driver is used. It is responsible for executing the commands received from applications/services or OS.
Android Framework
YotaPhone utilizes standard Android framework with minor custom modifications.
Back Screen Activity Lifecyrcle
Section describes details of BSActivity application lifecycle. BSActivity is responsible for display of output data on the Back Screen. Figure below represents the lifecycle of this application.

Figure 3. Back Screen activity lifecycle.
BSActivity is based on standard android service. Developer must declare it inAndroidManifest.xml:
<service android:name="com.yotadevices.example.BSActivity"/>
You can invoke BSActivity using code
mContext.startService(BSActivityIntent);
- Upon start up the
BSActivityreceives callbackonBSCreate()and registers itself in the YotaPhone Manager (YM) as Back Screen Application, which has an icon and title and is visible in Task Manager on Back Screen. - Upon registration
BSActivityreceives callbackonBSResume()and now BSActivity is able to draw on the back screen. - When next BS-application is started or user calls the Task Manager on back screen , YM will stop active BSActivity which receives callback
onBSPause(),onBSStop(). - YM will destroy BSActivity upon receive
onBSDestroy(likeonDestroy()in standard android service)
Any data can be saved in onBSSaveInstanceState(Bundle savedInstanceState), which is called following the onBSPause(). BSapplication is not active upon receive onBSPause() callback, any output to the back screen or arrival of any gestures from back screen touch panel is blocked now. BS-Application could receive onBSStop() in any time. When multiple reuse of BSActivity being active is required, the onHandleIntent(Intent intent) method shall be overrode to allow the output on the back screen.