Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3150067
  • 博文数量: 117
  • 博客积分: 10003
  • 博客等级: 上将
  • 技术积分: 5405
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-23 09:34
文章分类

全部博文(117)

文章存档

2011年(1)

2010年(10)

2009年(69)

2008年(37)

分类: LINUX

2009-03-28 11:01:29

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) |
给主人留下些什么吧!~~

chinaunix网友2009-04-01 21:46:24

我靠,这是什么博?