我有一个推送了一些 ViewController 的应用程序。我登录 JSON 网络服务,获取一些数据并在应用程序处于活动状态时做一些工作。当应用程序关闭或移至后台时,我想注销。
通常这是可行的,我的 JSON 加载器在自己的线程上调用 web 服务,并使用 NSDictionary 和表示调用结果的枚举调用委托。
当我的应用程序使用以下函数发送到后台时,我错过了这个调用:
- (void)applicationWillResignActive:(UIApplication *)application
{
JSONLoader *json = self.startViewController.json;
NSString *usr_no = [self.startViewController.user.usr_no stringValue];
//ask json for logoff
NSString *relativePath = [NSString stringWithFormat:@"users/%@?action=logout", usr_no];
NSURL *logoutUrl = [NSURL URLWithString:relativePath relativeToURL:kBaseURLString];
[json loadWithURL:logoutUrl sendResult:kJSONLogoutSuccess];
}
它会注销,但它永远不会到达我必须确保注销成功的代表程序:
-(void)updatedDictionaryFromJson:(NSDictionary *)items withResult:(JsonResult)result{
// do some other stuff..
if (result == kJSONLogoutSuccess) {
//user logout was successful
NSLog(@"got some logout json");
}
}
为什么应用程序进入后台时没有调用调用,有人有类似的经验吗?应用程序在后台了吗?还是我应该辞职?有什么建议么?