Hello Bada!详解之一:系统框架与生命周期

Hello Bada!中演示了如何创建一个简单的Form项目,简单的UI中按下按钮显示Hello及弹出对话框。

今天以此项目为基础,来详细讲解一下Bada项目最基本的知识。

一、Bada系统的架构

从Bada文档中祭出架构图:


先来简单分析一下这四层架构。

最底层是Kernel层,Bada同Android等一样,也是基于linux系统的,所以它的系统kernel就是linux 的kernel。官网上强调它是实时的系统。

底层的上一层是Device层,负责内存、IO管理,安全管理,图形窗口和事件管理,数据协议、移动通信,音频视频等多媒体管理。这是很重要的一层。

再上一层是Service层,主要是应用程序引擎,比如联系人和信息组件,与bada服务交互组件。

最上层为Franmework层,我们应用开发都要在此层做了。它提供基础api,UI和图形api等。

大家再来看看下图。


这幅图就是大名鼎鼎的Android架构图,可惜不知为何在Android开发网上找不到了。

对比两副图我们会发现,底层是一样的,都是linux kernel。

而我觉得Bada的framework层=Android的framework层+libraries层。因为Bada的开发语言是C++,可以直接调用系统提供的库,而Android用java封装好api,用这些api来调用

那些库函数。

二、应用的生命周期

在Android中,应用程序的生命周期是与Activity紧密相关的,而在Bada,机制是不同的。

还是先看图再说。


应用程序会经历四个重要的状态:应用程序初始化、在前台、在后台、结束。

对应在程序中:

bool  
Helloworld::OnAppInitializing(AppRegistry& appRegistry)  
{  
    // TODO:  
    // Initialize UI resources and application specific data.  
    // The application's permanent data and context can be obtained from the appRegistry.  
    //  
    // If this method is successful, return true; otherwise, return false.  
    // If this method returns false, the application will be terminated.  
  
    // Uncomment the following statement to listen to the screen on/off events.  
    //PowerManager::SetScreenEventListener(*this);  
  
    // Create a form  
    HelloworldForm *pHelloworldForm = new HelloworldForm();  
    pHelloworldForm->Initialize();  
  
    // Add the form to the frame  
    Frame *pFrame = GetAppFrame()->GetFrame();  
    pFrame->AddControl(*pHelloworldForm);  
  
    // Set the current form  
    pFrame->SetCurrentForm(*pHelloworldForm);  
  
    // Draw and Show the form  
    pHelloworldForm->Draw();  
    pHelloworldForm->Show();  
  
    return true;  
}  
  
bool  
Helloworld::OnAppTerminating(AppRegistry& appRegistry, bool forcedTermination)  
{  
    // TODO:  
    // Deallocate resources allocated by this application for termination.  
    // The application's permanent data and context can be saved via appRegistry.  
    return true;  
}  
  
void  
Helloworld::OnForeground(void)  
{  
    // TODO:  
    // Start or resume drawing when the application is moved to the foreground.  
}  
  
void  
Helloworld::OnBackground(void)  
{  
    // TODO:  
    // Stop drawing when the application is moved to the background.  
} 
可以看到,前台和后台的管理是在应用程序级别来控制的。而Bada中的Form只有初始化和结束两种状态,如下:

result  
HelloworldForm::OnInitializing(void)  
{  
    result r = E_SUCCESS;  
  
    // TODO: Add your initialization code here  
  
    // Get a button via resource ID  
    __pButtonOk = static_cast<Button *>(GetControl(L"IDC_BUTTON_OK"));  
    if (__pButtonOk != null)  
    {  
        __pButtonOk->AddTouchEventListener(*this);  
        __pButtonOk->SetActionId(ID_BUTTON_OK);  
        __pButtonOk->AddActionEventListener(*this);  
    }  
    //Get a label  
    __pLabel = static_cast<Label *>(GetControl(L"IDC_LABEL1"));  
    return r;  
}  
  
result  
HelloworldForm::OnTerminating(void)  
{  
    result r = E_SUCCESS;  
  
    // TODO: Add your termination code here  
  
    return r;  
}  



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值