`
yesjavame
  • 浏览: 687153 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Symbian学习笔记(7):定时器

阅读更多
教材里说到活动对象时,总拿CTimer来做例子,从CActive派生一个CMyActive然后它包括一个CTimer iTimer,再利用它的异步函数iTimer.After来演示活动对象的效果。

但是CTimer本身就已经是源于CActive了,所以我今天来讨论的是直接使用定时器,必竟在手机上定时器是一个比较常用的功能(在BREW开发中因为没有多线程,几乎所有的应用都会用上那个ISHELL_SetTimer)。

CTimer有两个子类CPeriodic和CHeartbeat,都可以处理周期性的定时器回调,其中心跳当然是更有规律一些了,它的使用也稍稍麻烦一点。

先看看心跳的使用吧。修改一下我们的一个视图:
classCDemoUIAppView:publicCCoeControl,MBeating
...
...{
//省略部分代码
public:

voidBeat();
voidSynchronize();

voidStartTimer();

private:
CEikLabel
*iLabel;
TInttotal;
public:
CHeartbeat
*iHeart;
}

其中MBeating接口定义了两个方法Beat(每次心跳时调一下它)和Synchronize(跟系统时钟同步一下心跳频率)。
voidCDemoUIAppView::ConstructL(constTRect&aRect)
...{
CreateWindowL();
//创建一个标准优先级的心率定时器
total=0;
iHeart
=CHeartbeat::NewL(CActive::EPriorityStandard);

iLabel
=new(ELeave)CEikLabel;
iLabel
->SetContainerWindowL(*this);

SetRect(aRect);
ActivateL();
}

//在每次心跳的时候将total加1,重绘iLabel
voidCDemoUIAppView::Beat()
...{
this->total++;
if(this->total>100)
...{
this->total=0;
iHeart
->Cancel();
}

TBuf
<16>buf;
buf.Format(KMsgFormat,
this->total);
iLabel
->SetTextL(buf);
DrawNow();
}

//暂时不用同步
voidCDemoUIAppView::Synchronize()
...{
return;
}

//启动
voidCDemoUIAppView::StartTimer()
...{
this->iHeart->Start(ETwelveOClock,this);
}

注意到iHeart->Start的方法第一个参数ETwelveOClock在枚举TTimerLockSpec中定义,按1/12到1秒这样划分定时间隔。

如果我们想用CPeriodic来做定时器的话,不需要实现什么接口了,只需要在Start的时候提供一个回调函数就可以了。

分享到:
评论

相关推荐

    symbian定时器的使用总结

    在Symbian操作系统中,定时器(Timer)是一种重要的机制,用于在特定时间间隔后触发一个事件或执行一段代码。Symbian定时器基于平台的调度服务,它提供了灵活的时间间隔控制,使得开发者可以在应用程序中实现各种...

    Symbian学习笔记

    这些学习笔记涵盖了Symbian开发的多个关键方面,包括调试、基础概念、应用框架、图形用户界面(GUI)开发、多线程处理、定时器、系统集成以及网络通信。 1. **Debug On Device**: 在设备上进行调试是开发过程中的...

    symbian学习笔记(超级经典-适用于初学者)

    本学习笔记旨在为初学者提供全面、细致的Symbian操作系统知识,帮助你快速入门并深入理解其工作原理。 一、Symbian系统概述 Symbian操作系统最初由英国的EPOC公司开发,后被诺基亚收购并成为其主要的操作系统平台。...

    symbian学习笔记,全28讲

    【Symbian学习笔记概述】 Symbian操作系统是一款曾经广泛应用于智能手机的操作系统,尤其在诺基亚手机上占据主导地位。对于想要学习Symbian开发的初学者来说,理解其开发环境的搭建至关重要。本系列笔记共28讲,...

    symbian 定时器

    在Symbian操作系统中,尤其是S60平台上,CPeriodic定时器是实现定时任务处理的关键组件之一。本文将深入探讨CPeriodic定时器的使用方法,并通过一个具体实例——在S60程序中实现动态曲线图,来展示其功能与应用。 #...

    Symbian学习笔记(中国移动开发者社区).pdf

    学习 CleanupStack #### 5.1 CleanupStack 的概念 CleanupStack 是 Symbian 系统中一种特殊的数据结构,主要用于异常处理和资源清理。当程序发生异常时,CleanupStack 会自动回溯并清理之前分配的资源,避免内存...

    symbian 学习笔记

    **Symbian操作系统详解** Symbian是一款历史悠久的智能手机操作系统,尤其在2000年至2010年间,它是全球领先的移动设备...通过深入学习和实践,开发者可以从Symbian中学到很多关于移动平台优化和资源管理的宝贵经验。

    塞班俄罗斯方块游戏(含源代码,基于Nokia5230真机调试)

    一个完全原创的基于Nokia5230进行真机开发以及调试的俄罗斯方块小游戏,其中使用到了一些Symbian应用开发的基本技术,例如:定时器、屏幕绘图、菜单、鼠标响应、震动器、传感器等等,源代码都在里面了,大家可以随意...

    Symbian塞班操作系统

    ### Symbian塞班操作系统深度解析 #### Symbian简介:智能移动终端的先驱者 Symbian操作系统,源自英国宝意昂公司(Psion)的EPOC操作系统,其设计理念强调“使用电子产品如同品尝乳酪般简单”。EPOC的命名灵感...

    JAVA 五年的工作经验和学习笔记

    由于本人目前允许上传的资源太小,所以无法上传整个的技术学习笔记(JAVA 五年的工作经验和学习笔记),待以后有机会会分享给大家。 技术体系包括: J2SE/J2ME/J2EE/JAVA代码优化/Flex(BlazeDS、PureMVC等技术)...

    真正的Symbian笔记.docx

    以上知识点构成了Symbian笔记的主要内容,通过学习这份笔记,开发者不仅可以理解Symbian操作系统的运作原理,还能掌握实际开发中的技巧和最佳实践。虽然Symbian系统现在已不流行,但其设计理念和许多技术仍对现代...

    转:webkit开发学习笔记(全面)_第一版

    **WebKit 开发学习笔记概述** WebKit 是一个开源的网页内容渲染引擎,被广泛应用于各种浏览器,包括谷歌的 Chrome、苹果的 Safari、以及许多其他双核浏览器。WebKit 的诞生源自苹果公司在其 Mac OS X 操作系统中对 ...

    Symbian 简单时钟代码

    通过学习和分析这个源码,开发者不仅可以了解Symbian的GUI编程基础,还能掌握如何使用系统服务来实现定时任务和实时数据更新。对于想要深入Symbian开发的人来说,这是一个很好的起点。同时,这也展示了Symbian系统...

    symbian线程

    Symbian线程的学习和实践可以帮助开发者更好地理解和优化Symbian应用程序的性能,提供更流畅的用户体验。通过深入研究提供的"Symbian线程"教程,你可以掌握如何在Symbian平台上进行高效的多线程编程。这个入门教程,...

    Symbian学习资料(英文版)

    7. **安全性**:Symbian系统重视安全性,它具有基于证书的安全模型和权限管理系统,以保护设备和用户数据不受恶意软件侵害。 8. **系统服务**:Symbian提供了各种系统服务,如电话管理、日历、联系人、任务管理等,...

Global site tag (gtag.js) - Google Analytics