| |
Symbian中的gprs连接关断方法(下) |
|
时间: 2006-04-05 来自:www.3g918.com.cn |
 |
|
那么如何让程序自动关闭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等真机上测试通过。
|
|
|
|
|
|
标签NewsAbout错误:Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
|
|
|
|
|
|