symbian异步方法请求之监听系统时间事件

系统时间的事件处理可由类CEnvironmentChangeNotifier来处理,不过要自己封装处理该事件的方法。以下是具体是实现代码:

.h头文件

#ifndef CENVCHANGENOTIFIER_H_
#define CENVCHANGENOTIFIER_H_

#include <bacntf.h>

static TInt CallBackFunction(TAny *aPtr);

class CZDNoteEnvChangeNotifier : public CBase
	{
public:
	TInt ChangeL();	

public:
	static CZDNoteEnvChangeNotifier* NewL();
	
	void ConstructL();
	CZDNoteEnvChangeNotifier(MUiBase* aUiBase);
	
public:
	virtual ~CZDNoteEnvChangeNotifier();

private:
	TCallBack* iCallBack;
	CEnvironmentChangeNotifier* iChangeNotifier;	
	};

static TInt CallBackFunction(TAny *aPtr) //回调函数定义为静态全局函数,供系统异步调用
	{
	CZDNoteEnvChangeNotifier* noteNotifier = static_cast<CZDNoteEnvChangeNotifier*>(aPtr);
	return noteNotifier->ChangeL();
	}

#endif /* CENVCHANGENOTIFIER_H_ */

.cpp实现文件

#include "EnvChangeNotifier.h"

CZDNoteEnvChangeNotifier* CZDNoteEnvChangeNotifier::NewL()
	{
	CZDNoteEnvChangeNotifier* self = new (ELeave)CZDNoteEnvChangeNotifier();
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);	
	return self;
	}

void CZDNoteEnvChangeNotifier::ConstructL()
	{
	//定义callback function
	iCallBack = new (ELeave) TCallBack(CallBackFunction, this);
	iChangeNotifier = CEnvironmentChangeNotifier::NewL(0, *iCallBack);
	//开启异步方法请求,接收系统时间事件等
	iChangeNotifier->Start();
	}

CZDNoteEnvChangeNotifier::CZDNoteEnvChangeNotifier()
	{
	// TODO Auto-generated constructor stub
	}

TInt CZDNoteEnvChangeNotifier::ChangeL()
	{
	TInt change = iChangeNotifier->Change();
	
	if(change & EChangesSystemTime)
		{	
		//如果系统时间被修改,则进行相应操作				
		}
	return 1;
	}

CZDNoteEnvChangeNotifier::~CZDNoteEnvChangeNotifier()
	{
	// TODO Auto-generated destructor stub
	if(iChangeNotifier != NULL)
		{
		iChangeNotifier->Cancel();	
		delete iChangeNotifier;
		iChangeNotifier = NULL;
		}
	if(iChangeNotifier != NULL)
		{
		delete iCallBack;
		iCallBack = NULL;
		}		
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值