RChangeNotifier和CEnvironmentChangeNotifier 的使用

转载 2011年01月12日 16:52:00

 收藏

 RChangeNotifier 

CEnvironmentChangeNotifier 

可以用来监视是否到达了午夜,位置改变,有线程死掉了,系统时间被修改,电量变化等事件,有因内存不足引起的分配失败等事件

 RChangeNotifier 和 CEnvironmentChangeNotifier 的关系类似于RTimer和CTimer的关系。

RChangeNotifier 是阻塞的,使用的时候最好放在一个CActive里面。用法灵活。

CEnvironmentChangeNotifier  本身就是个CActive可以直接使用。使用方便

 

 

 

使用方法如下:

RChangeNotifier:

 

 

 

{

...

RChangeNotifier the_notifier;

TRequestStatus the_status;

...

the_notifier.Create();

the_notifier.Logon(the_status);

User::WaitForRequest(the_status);

...

...// prepare for a long wait

...

TInt changes = the_status.Int();

if (changes & EChangesSystemTime)

    {

    // handle a change to system time

    }

if (changes & EChanges EChangesLocale)

    {

    // handle a change to locale

    }

...

the_notifier.Close();

...

}

CEnvironmentChangeNotifier

 

void CExampleEnvChangeNotifier::ConstructL()

      {

      iCallBack = new (ELeave)TCallBack(CallBackFunction, this);

      iChangeNotifier =

           CEnvironmentChangeNotifier::NewL(0, *iCallBack);

      iChangeNotifier->Start();

      }

CExampleEnvChangeNotifier::~CMyEnvChangeNotifier()

      {

      iChangeNotifier->Cancel();

     delete iChangeNotifier;

     delete iCallBack;

      }

TInt CExampleEnvChangeNotifier::CallBackFunction(TAny* aFunction)

      {

      return ((CEventsEnvChangeNotifier*)aFunction)->ChangeL();

      }

TInt CExampleEnvChangeNotifier::ChangeL()

     {

      TInt change = iChangeNotifier->Change();

//当iChangeNotifier 启动的时候绘产生一次回掉此时change为127

    if (change==127)

    {

        return -1;

    }

      if (change & EChangesLocale)

             {

             // Locale change, do something 

             }

      if (change & EChangesMidnightCrossover)

             {

             // Midnight crossover, do something 

             }

      if (change & EChangesThreadDeath)

             {

              // Thread death, do something 

             }

      if (change & EChangesPowerStatus)

             {

             // Power status change, do something 

              }

      if (change & EChangesSystemTime)

              {

              // System status change, do something 

              }

      return 1;

       }

EChangesLocale 

The system locale has changed.

 

 

Typically this event occurs as a result of a call to TLocale::Set().

 

 

 

位置改变

 

EChangesMidnightCrossover 

The system time has passed midnight.

 

 

 

到达午夜

 

EChangesThreadDeath 

A thread has died.

 

 

This event is reported when any thread in the system dies.

 

 

 

有线程死掉了

 

EChangesPowerStatus 

The status of the power supply has changed.

 

 

 

电量变化

 

EChangesSystemTime 

The system time has changed.

 

 

 

系统时间被修改

 

 

EChangesFreeMemory 

The free memory level has crossed a specified threshold value.

 

 

 

 

 

EChangesOutOfMemory 

A memory allocation has failed due to insufficient free memory.

 

 

 

有因内存不足引起的分配失败

 

 

我专门写了个CEnvironmentChangeNotifier 例子,在e51上可以正常工作了。http://download.csdn.net/source/710390

RChangeNotifier和CEnvironmentChangeNotifier 的使用

 RChangeNotifier CEnvironmentChangeNotifier 可以用来监视是否到达了午夜,位置改变,有线程死掉了,系统时间被修改,电量变化等事件,有因内存不足引起的分配失败等...
  • windcao
  • windcao
  • 2008年10月22日 14:15
  • 849

RChangeNotifier和CEnvironmentChangeNotifier 的使用

收藏  RChangeNotifier CEnvironmentChangeNotifier 可以用来监视是否到达了午夜,位置改变,有线程死掉了,系统时间被修改,电量变化等事件,有因内存不足引起的分配...
  • dymx101
  • dymx101
  • 2010年03月01日 16:26
  • 463

Symbian进程监控RChangeNotifier的使用技巧

Symbian进程监控RChangeNotifier的使用技巧(2010-03-12 23:40:22)转载标签:symbian总结it分类:Symbian学习总结Symbian进程监控RChange...
  • fhbystudy
  • fhbystudy
  • 2010年06月11日 09:08
  • 247

实验4 [bx]与loop的使用

做这个实验时我认为小菜一碟,认为很快就会搞定,但是等我编好程序,编译连接的时候出现了问题,我摸不着头脑,不知道问题出现在哪里,下面时出现问题的程序: assume cs:codesg codesg...
  • qq_25201379
  • qq_25201379
  • 2017年04月21日 22:57
  • 609

抽象类和接口分别应该在什么时候使用

(转载)http://www.onmpw.com/tm/xwzj/prolan_151.html 在本篇我们将要学到在什么情况下使用抽象类要比使用接口程序更有效率。 抽象类的使用 一个抽象类...
  • u010746364
  • u010746364
  • 2016年06月14日 10:48
  • 1411

Cookie和Session的详细使用方法

进行Web开发,熟练地使用Cookie和Session是必须的,有时间来总结一下希望对大家都有用...
  • xiaouncle
  • xiaouncle
  • 2016年07月19日 16:34
  • 5261

Java-正确使用equals和hashCode方法

基本摘抄自Java 中正确使用 hashCode 和 equals 方法 hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的java类都继承这两个...
  • qing0706
  • qing0706
  • 2016年01月27日 14:09
  • 1878

映射静态资源

/ 映射时,能映射静态资源 -->
  • qingxialntian
  • qingxialntian
  • 2015年03月17日 16:03
  • 229

svn和git的入门使用

掌握代码管理工具的使用,svn,git掌握代码管理工具的使用svngit svn的基本使用 一SVN服务器搭建和使用 二客户端TortoiseSVN的使用 三创建分支合并相互操作 Git的基本使用 初...
  • zoky_ze
  • zoky_ze
  • 2017年01月23日 15:44
  • 691

String和stringBuffered的区别

String与StringBuffer的区别 标签: stringdeleteinsert多线程编译器user 2011-01-15 11:10 112679人阅读 评论(3) 收藏 举报...
  • meng_lijin_6
  • meng_lijin_6
  • 2017年05月28日 21:45
  • 270
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RChangeNotifier和CEnvironmentChangeNotifier 的使用
举报原因:
原因补充:

(最多只允许输入30个字)