qtopia2启动之quicklaunch与singleexec

quicklauncher机制:

     采用quicklauncher可以加快qtopia应用的启动速度。 具体方法是事先启动一个quicklauncher进程,把一些

初始化工作做好,等需要启动应用时,直接开始进入应用主窗口运行。

1) quicklauncher进程如何启动的?

   两个场合会启动: 系统初始化启动时;  quicklauncher进入应用主窗口后,就变身为具体的应用了,此时需要再启动一个新的quicklauncher进程以备下次使用。

     系统初始化时启动quicklauncher:

      qtopia的启动总是从 ../bin/qpe 开始执行。 刚开始会执行 initApplication.  initApplication具体内容如下:

            initEnvironment ;

           qcop clean up;

         ServerApplication a( argc, argv, QApplication::GuiServer );   //ServerApplication 是QPEApplication的一个子类。

           AlarmServer::initialize();

           new PhoneServer;

           new Server() {

                    new PhoneLauncher /  CoverPhone ;

                    new DocumentList;

                    new AppLauncher; 构造函数里会构造一QProcess, 来exec bin/quicklauncher , 来启动quicklauncher进程.

                   启一个定时器,x秒后构造一QProcess, 来exec bin/qss , 来启动qsoundserver进程.

                 startTransferServer/ 电源管理、 电池管理初始化。

           }

       此外, AppLauncher 在发送execute的qcop消息通知quicklauncher进程变身为应用后,会启动一个定时器,再启动一个quicklauncher进程。

2) quicklauncher进程注意干些啥?

    代码可以参见: singleexec模式的参考 server/main.cpp等 ,  非singleexec模式参考tools/quicklauncher.cpp

主要干的事是:

  • Link to the most common libraries
  • Construct QPEApplication
  • Pre-load the default font and initialize other data where possible.
  • Execute the event loop and wait for a request to run an application.

singleexec机制:

     singleexec机制是将所有应用都静态链接成一个可执行文件qpe。 每个应用可执行文件都是指向qpe的链接文件。原理与busybox类似。

     好处: 省去了动态库链接,加快启动。 缺点: 全部链接成一个进程空间, 容易名称冲突,不利于第三方集成。

   此外,从理论上来说,singleexec并不更耗内存。因为可执行文件虽然变大了,但是程序启动只是分配了虚拟内存,物理内存并未分配。

  个人建议用prelink足够了,singleexec不一定需要用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值