首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> Symbian入门 >> 正文
Symbian中的gprs连接关断方法(下)
作者:北京理工…    文章来源:www.3g918.com.cn    更新时间:2006-4-5 17:16:21
那么如何让程序自动关闭gprs连接呢?
我考虑采用timer,一个活动对象,来完成这个任务。
头文件定义:
#include <e32base.h>
class CMbAppUi ;
class CCloseTimer : public CTimer  
{
protected:
        CMbAppUi * m_ui ;
        TInt       m_sec_count ;

private: // from CActive
        void RunL();
        void Queue() ;  // inner time delay function

public:
        CCloseTimer();
        virtual ~CCloseTimer();
        void ConstructL(CMbAppUi * pui) ;
};
下面是cpp文件定义:
#include <coemain.h>
#include "CloseTimer.h"
#include "MbAppUi.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const TInt KIntervalTime = 1000000 ; // 2 second

CCloseTimer::CCloseTimer():CTimer(EActivePriorityLogonA)   //  -------> 这里把优先级定成最低
{                                                                                                // 保证系统只有再空闲的时候才运行Timer
        m_ui = NULL ;
        m_sec_count = 0 ;
}

CCloseTimer::~CCloseTimer()
{

}

void CCloseTimer::RunL()
{
        Queue();             //   ---------->   这里就是延时操作了
        m_sec_count++ ;
        if(m_sec_count == 1 ) m_ui->CloseSession() ;     //  ------> 这里关闭了iSession,
        else if(m_sec_count == 3) m_ui->CloseSockSvr() ;  // ---->两秒钟后,我们关闭iSocketServ
        else if(m_sec_count == 4) {                                      // 至此,外部的gprs连接已经完全关闭了。
                if(m_ui->iMsgCount) m_ui->ShowGlobalNote() ;
        } else if(m_sec_count >= 5) {
                Cancel() ;
                if(m_ui->iMsgCount)        m_ui->StopCloseTimer() ;
                else m_ui->HandleCommandL(EEikCmdExit) ;
        }
}

void CCloseTimer::Queue() {
        After(KIntervalTime) ;  
}

void CCloseTimer::ConstructL(CMbAppUi * pui)
{
        CTimer::ConstructL() ;
          CActiveScheduler::Add( this ) ;   // ------>这句是把当前timer加入到Active Object的调度器中去
        if(pui != NULL) m_ui = pui ;
        Queue() ;                                     // ------->这句必须要加,否则调度器不会有机会运行喔!
}

嗯,这个技术大概就是这个样子了。
上述的代码是在Symbian S60 2.1 sdk下面调试通过。在6600,6670,7610,6681等真机上测试通过。
相关文章:
同时建立GMS和GPRS连接
在没有ui的程序中捕获所有的key事件
symbian中的timer
将程序带到前台或后台
Symbian 真机http上传下载文件
同时创建GPRS和GSM连接
创建不提示用户使用哪种方法连接或者选择哪个GPRS接入点的Internet连接
在S60程序中实现动态曲线图
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号