佳为好友

原:注销Logout逻辑分析

创建:2011.05.24
日期:2011.05

当程序注销之后,程序需要释放所有资源,并还原设置,以等待新的用户登录。
但是,这个过程并不简单。
它应该包括3个方面的内容:
# UI的还原
# 在后台执行的线程的关闭,即NSOperation的处理
# Session的操作

==对于UI还原的处理==
对于UI的还原,比较好处理。除了Window外,每次都重新加载全部的UI。
在Login的VC中进行加载。或者在自动登录处理结束之后在加载。
# 注册一个注销消息的Notification(如:SessionLogoutNotification)。

- (void)handleAppLogoutNotification:(NSNotification *)notification {
    
    [self AD_showLoadingView];
    
    [self AD_showLoginViewController];
    
    // 淡出Loading动画。
    [self AD_hiddenLoadingView];
# 取消一切后台运行设置的控制字段。
# 调用Session中的NSOperationQueue的cancelAllOperations。
# 检查queue的op数目是否都为0。
##如果是,则删除Session。将AppDelegate的currentSession设置为nil。返回。
## 如果是否,则:
### 将当前Session放到“已注销Session数组”里面。
### 将AppDelegate的currentSession设置为nil。
### 设定一个定时器,并不断的检查“已注销Session数组”里面的每个session的queue的op是否都为0,如果有,则从“已注销Session数组”里面中删除该session。
# 发送注销消息的Notification,让UI进行还原。


例如:
// LogoutAction
- (BOOL)run {
    NSDictionary *jsonValue = xxxxxx;    // 网络请求
    BOOL success = xxxxxx; // 判断是否注销成功了。
    if (success) {
        [gGlobal() globalLogout];   
    }
    return success;
}

// YDTSession
- (void)sessionLogout {
    
    mIsLogin = NO;
    
    [self saveInformation];
    
    // 取消上传。
    gSession().mMediaFileList.isNeedStopAndRelease = YES;  
    
    [mQueueManager cancelAllQueueOperations];
}

// YDTGlobal
- (void)globalLogout {
    // 用于自动登录。
    gGlobal().mPrevPhone = nil;
    gGlobal().mPrevPassword = nil;
    [gGlobal() saveInformation];
    
    [gSession() sessionLogout];
    if ([mYDTSession isSessionCanRelease]) {
        self.mYDTSession = nil;
        return;
    }
    
    // 如果当前仍有Op要处理,则使用Timer不停检测。
    [self G_AddLogoutSession:self.mYDTSession];
    self.mYDTSession = nil;
    [mLogoutTimer performSelectorOnMainThread:@selector(fire) withObject:nil waitUntilDone:NO];
}


+++++

posted on 2012-12-30 11:23 佳为好友 阅读(223) 评论(0)  编辑 收藏 引用 所属分类: 非UI


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2012年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

留言簿(1)

随笔分类

搜索

最新评论

评论排行榜