简单说一下CPeriodic,很久之前做FLASH播放器的时候用到了这个类去周期性刷新屏幕。
这次做压力测试的时候又用到了这个类。本来很简单的东西,但是很容易犯错。特在这里记录
一下自己所走的弯路。可能对一些朋友有点帮助,也给自己做一个备忘录吧。
1初始化得到句柄
iCPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
2启动定时器
void CMyAppUi::StartTimer()//开始启动时钟
{
if (!iCPeriodic->IsActive())
{
//这里容易犯错误
//Period定义的时候一定要是静态的
//如果需要引用自己类里为数据。TCallBack(Period,this)初始代化回调的时候一定
//要加上THIS.我在这里可是吃了亏的
iCPeriodic->Start( 1000,3 * 1000 * 1000,TCallBack(Period,this));
}
}
3周期回调函数
//DEBUG的时候可以看看aPtr是否为空
TInt CMyAppUi::Period( TAny* aPtr)
{
( static_cast<CMyAppUi*>(aPtr))->DoPeriodTask();
return ETrue;
}
4周期的回调在这里实现自己的代码
void CMyAppUi::DoPeriodTask()
{
//周期回调
}
5暂停
void CMyAppUi::StopTimer()//开始启动时钟
{
if ( iCPeriodic->IsActive() )
{
iCPeriodic->Cancel();
}
}
记着析构时间句柄
以上代码在N73上测试通过
这次做压力测试的时候又用到了这个类。本来很简单的东西,但是很容易犯错。特在这里记录
一下自己所走的弯路。可能对一些朋友有点帮助,也给自己做一个备忘录吧。
1初始化得到句柄
iCPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
2启动定时器
void CMyAppUi::StartTimer()//开始启动时钟
{
if (!iCPeriodic->IsActive())
{
//这里容易犯错误
//Period定义的时候一定要是静态的
//如果需要引用自己类里为数据。TCallBack(Period,this)初始代化回调的时候一定
//要加上THIS.我在这里可是吃了亏的
iCPeriodic->Start( 1000,3 * 1000 * 1000,TCallBack(Period,this));
}
}
3周期回调函数
//DEBUG的时候可以看看aPtr是否为空
TInt CMyAppUi::Period( TAny* aPtr)
{
( static_cast<CMyAppUi*>(aPtr))->DoPeriodTask();
return ETrue;
}
4周期的回调在这里实现自己的代码
void CMyAppUi::DoPeriodTask()
{
//周期回调
}
5暂停
void CMyAppUi::StopTimer()//开始启动时钟
{
if ( iCPeriodic->IsActive() )
{
iCPeriodic->Cancel();
}
}
记着析构时间句柄
以上代码在N73上测试通过