我有一个推送了一些ViewController的应用程序。我登录JSON Web服务,获取一些数据并在应用程序处于活动状态时执行一些工作。当应用程序关闭或移动到后台时,我想注销。
通常这是有效的,我的JSON加载器在自己的线程上调用webservice并使用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");
}
}
为什么在应用程序进入后台时没有调用调用,任何人都有类似的经历?是在后台应用了吗?还是我应该辞职?有什么建议吗?