| Symbian中的gprs连接关断方法(下) |
| |
| 作者:未知 来源:本站原创 点击数:663 更新时间:2007-1-27 |
|
您可以添加到网摘 让更多人关注此文章:
那么如何让程序自动关闭gprs连接呢? 我考虑采用timer,一个活动对象,来完成这个任务。 头文件定义: #include 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 #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等真机上测试通过。
|
没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。 更多评论
|
|
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。 |
|
|
|