- symbian编程发布-yuelongr | 查看-67 | 发表时间-2009-11-10
适用平台:S60 3rd, S60 5th
symbian系统中有不少的事件通知,比如当线程死亡,区域改变或系统时间改变等系统环境变化的时候,我们就可以实时获取该的事件通知.
主要实现方法: 活动对象CEnvironmentChangeNotifier的应用.主要用回调函数TCallBack来完成事件的通知。
具体实现方案:
需要的头文件和链接库
#include <bacntf.h> // Link against bafl.lib
// NotifyChange is a static member function declared as follows:
// static TInt NotifyChange( TAny* aObject );
TCallBack envChangeCallback( NotifyChange, this );
iEnvNotifier = CEnvironmentChangeNotifier::NewL( CActive::EPriorityHigh, envChangeCallback );
// Issues a request for change events. When a change events occurs, the
// callback function is called. Note that after the first call to this
// function, the callback function is called immediately. iEnvNotifier->Start();
通过TChanges来获取事件通知
TInt CMyEnvironMentChangeNotifier::NotifyChange( TAny* aObject )
{
CMyEnvironMentChangeNotifier* thisPtr = static_cast<CMyEnvironMentChangeNotifier*>( aObject );
// Retrieve the changes in a bit field
const TInt changes( thisPtr->iEnvNotifier->Change() );
if( changes & EChangesLocale )
{
// System locale changed
}
if( changes & EChangesMidnightCrossover )
{
// Midnight crossover
}
if( changes & EChangesThreadDeath )
{
// Thread death
}
if( changes & EChangesPowerStatus )
{
// Power status changed
}
if( changes & EChangesSystemTime )
{
// System time changed
}
if( changes & EChangesFreeMemory )
{
// Free memory changed
}
if( changes & EChangesOutOfMemory )
{
// Out of memory
}
}
(来自:Forum Nokia Wiki)