Introduction
Qtopia loads a variety of components and objects
during its startup process. This document identifies and describes
these stages and gives a rough estimation of the amount of time that is
used up by these boot stages. This part of the documentation is
specific to the Qtopia's Phone edition.
Boot Stages
The boot stages in the following table can be found in $QPEDIR/src/server/main.cpp:initApplication().
Boot stage |
Subcomponent |
Subcomponent detail |
Proportion of boot time in % |
initialize environment |
|
|
1.1 |
cleanup QCop directories |
|
|
< 0.1 |
ServerApplication |
QApplication constructor |
|
2.8 |
|
QPEApplication constructor |
setup Qtopia data directory |
< 0.1 |
|
|
install of qMsgHandler() |
< 0.1 |
|
|
Keypad or Touchscreen mode |
0.4 |
|
|
QPEApplicationData() |
0.4 |
|
|
load TextCodecs |
1.5 |
|
|
load ImageCodecs |
1.3 |
|
|
setup default fonts |
0.1 |
|
|
initialize application (initApp()) |
0.5 |
|
|
load font renderer |
2.8 |
|
|
load translations |
2.3 |
|
|
install Qtopia's screensaver |
2.3 |
|
|
QPEMenuToolFocusManager() |
0.3 |
|
install storage monitor |
|
0.2 |
|
obtain current PowerStatus |
|
< 0.1 |
|
create power alerter |
|
1.3 |
|
apply light settings |
|
0.2 |
|
setup KeyFilter |
|
< 0.1 |
refresh Time zone information |
|
|
2.9 |
initialize keyboard |
|
|
< 0.1 |
load and show SplashScreen |
|
|
8.6 |
create Server |
create Phone GUI (PhoneLauncher) |
load translations |
< 0.1 |
|
|
create PhoneHeader |
6.0 |
|
|
create ContextLabel |
< 0.1 |
|
|
create HomeScreen |
3.5 |
|
|
create launcher menu |
6.2 |
|
|
create BatteryMonitor |
< 0.1 |
|
|
show HomeScreen |
< 0.1 |
|
|
create LoadingWidget |
1.1 |
|
|
start |
4.2 |
|
|
create & PhoneAccessories |
< 0.1 |
|
|
load theme |
26.5 |
|
create DocumentList (*) |
|
1.4 |
|
start AppLauncher |
|
< 0.1 |
|
setup |
|
< 0.1 |
|
start TransferServer |
|
< 0.1 |
|
start IrServer |
|
7.3 |
|
start PackageHandler |
|
< 0.1 |
|
preload applications |
|
< 0.1 |
Login to qpe server |
|
|
0.2 |
start SysFileMonitor |
|
|
< 0.1 |
initialize |
|
|
< 0.1 |
The following steps are performed once the server has entered its event loop.
Boot stage |
Subcomponent |
Proportion of boot time in % |
DocumentList |
load application links (*) |
1.1 |
|
load document links (*) |
0.1 |
Phonelauncher |
update background |
0.8 |
Description of Boot Steps
Synchronous steps
Initialize Environment
This step initializes essential environment variables such as TZ and LANG.
Furthermore it determines the rotation and QWS display (specified as
cmd line arguments and/or environment variables) that is used by
Qtopia.
Cleanup QCop Directory
This step will delete all qcop files in Qtopia's data directory.
ServerApplication
ServerApplication is the servers object.
- QApplication constructor
- QPEApplication constructor
- setup Qtopia data directory - The Qtopia data directory is used to store temporary files such as qcop-msg files
- qMsgHandler() - Installs Qtopia's message handler.
- Keypad vs Touchscreen - This step determines whether Qtopia will run in Touchscreen or Keypad mode. The mode is determined by defaultbuttons.conf.
- QPEApplicationData() - Initializes the private application data for this QPEApplication object.
- load TextCodecs - By default Qtopia will load two text codecs (simple and jp)
- load ImageCodecs - By default Qtopia will load three image codecs (notepad, OTA and WAP Bitmap(WBmp))
- setup default font - This step loads the helvetica family. Depending on the current screen size the font size will vary between 8 and 12.
- initApp() - This function releoads application data
which change if an application is quicklaunched. As soon as
Quicklauncher is executing another application the object needs to be updated in order to reflect the new applications properties (e.g. translation files, new etc.).
- load font renderer
- load translations
- install Qtopia's screensaver - Qtopia has its own ScreenSaver. The screensaver determines the actions which will be taken in order to conserve energy.
- QPEMenuToolFocusManager
- install storage monitor - The StorageMonitor monitors
the free space on the device. If it is likely that the device is
running out of space, the monitor will notify the user. The
notification provides a link to the .
- obtain current PowerStatus - The power status is needed in order to setup the correct light settings for the server.
- power alerter - The power alerter keeps track of the device's power status and informs the user when the internal battery power level is low.
- light settings - This stage loads Qtopia's light and screensaver configuration.
- setup KeyFilter - This is the main keyfilter for the qpe server.
Time Zone Information
Qtopia maintains a list of default time zones. These time zones
are considered to be the most frequently used zones in Qtopia. If the
list of default time zones is empty it will be initialized with six
standard time zones (New York, Los Angeles, Oslo, Tokyo, Hong Kong and
Brisbane).
Keyboard Initialization
This stage will setup the keyboard layout used by /E.
SplashScreen
During Qtopia's startup phase Qtopia presents a SplashScreen. This step will load and start the SplashScreen(-animation).
Server
The server is the main widget of the qpe server.
- create Phone UI
- load translations
- PhoneHeader - The PhoneHeader presents the status of
the phone. Depending on the theme it can show the signal strength, the
battery status and the current time.
- ContextLabel - The context label is the bottom widget of Qtopia Phone.
- HomeScreen - The Homescreen is the main widget that is visible after the start of Qtopia.
- create launcher menu - This step determines the appearance of the launcher view.
- BatteryMonitor - This monitor object keeps track of the batterylevel by either using PowerStatus or the modem.
- show HomeScreen - The HomeScreen is the first widget that will be shown once Qtopia has been started.
- create LoadingWidget
-
-
- load theme - This step loads the theme config files
and changes the appearance server widget such as the HomeScreen, the
PhoneHeader and the ContextLabel.
- create DocumentList
- Applauncher - The Applauncher class connects Qtopia's
user interface and applications. It handles the start of applications
and makes use of Quicklauncher
- StorageInfo - The server uses a object in order to keep track of mounting activity.
- TransferServer - The TransferServer is responsible for file transfer with Qtopia Desktop and uses the FTP protocol.
- IrServer - The IrServer is loaded via a plug-in. It uses the Object Exchange Protocol (OBEX). plug-in is used by Qtopia for infra-red communication and links with OpenOBEX.
- PackageHandler - The PackageHandler allows the (de-)installation of Qtopia packages. It relies on ipkg to do this task.
- preloading of Applications
Server Login
This stage will perform the pin authentication if required.
Qtopia Phone will not unlock the keys without a valid authentication.
SysFileMonitor
The SysFileMonitor (see QPE_SYSTEM_SYSFILEMONITOR) polls /etc/mtab
and various other status files in order to keep track of new Storage
Cards added to the system. If the HotPlug system is Qtopia-aware this
monitor is not necessary. Qtopia's class propagates these changes throughout Qtopia.
Steps Executed by Event Loop
DocumentList
The DocumentList class is a main helper class for the launcher view.
- load application links - Finds all applications, loads their icons and adds each application (if all requirements are met) to the launcher view.
- load document links - Searches for all documents on the device and adds them to the document list in the launcher view.
PhoneLauncher
- update background - Finds and loads the background pixmap (specified by the current theme) for the Phone Launcher.
Boot-up Time Improvements
Image Scaling
A large proportion of Qtopia's startup time is
spent on theme loading. This means a lot of pictures have to be loaded
and potentially scaled. The actual size of these images depends on the
screen size and the size attributes specified by a particular theme. If
a pictures doesn't have the correct size it will be scaled before the
first use. The scaling process can last up to 15% of Qtopia's boot up
time. Therefore it is recommended to provide these pictures with the
correct size. Qtopia's default themes are optimized for a screen size
of 176x208 pixels and should not require any resizing during loading.
In order to assist in the process of identifying these scaling
operations Qtopia 2.1.2 or later will print a debug statement when the
theming framework is scaling an image.
阅读(1067) | 评论(1) | 转发(0) |