加载不同案例的数据

时间:2018-01-15 02:05:56

标签: ios objective-c

我有以下实现。如您所见,我试图在三种不同情况下使用网络操作加载数据:

  • viewDidLoad
  • applicationEnteredForeground
  • pushNotificationMessageReceived

我想知道我是否在以下课程中所做的不仅仅是在三个不同的地方调用网络操作。

是否存在多余的内容或任何建议或建议?

- (void)viewDidLoad {
    [super viewDidLoad];
    [self loadData];    

    [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(pushNotificationMessageReceived:)
                                                     name:@"restaurantOrderNotificationMessage"
                                                   object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(applicationIsActive:)
                                                 name:UIApplicationDidBecomeActiveNotification
                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(applicationEnteredForeground:)
                                                 name:UIApplicationWillEnterForegroundNotification
                                               object:nil];
}

- (void)applicationEnteredForeground:(NSNotification *)notification {
    NSLog(@"Application Entered Foreground");
    [self loadData];
}

- (void)applicationIsActive:(NSNotification *)notification {
    NSLog(@"Application Did Become Active");
}

// AppDelegate notification center calls
-(void)pushNotificationMessageReceived: (NSNotification *)notification{

    [self loadData];
}

1 个答案:

答案 0 :(得分:1)

加载viewDidLoad时会调用

UIView。因此,它只在最初加载视图时调用一次。

当应用程序从后台召唤时,会调用{p> applicationEnteredForeground一次。当应用程序返回后台(用户按下主页按钮或切换到其他应用程序)然后返回到您的应用程序时,将再次触发此通知。

在您的情况下,您可能希望将网络函数调用放在viewDidLoadapplicationEnteredForeground中,就像您一样。对于pushNotificationMessageReceived,您应该单独处理它。有两种可能的情况,至少:

  1. 当您的应用处于活动状态时收到推送通知:您可能会考虑将推送通知消息作为提醒来处理。您只在用户在警报中单击“确定”时加载数据,因为您可以选择不加载数据(取决于您的用户体验设计)

  2. 当您的应用处于后台时收到推送通知:当用户点击通知横幅/提醒时,应用将启动,并且applicationEnteredForeground将被调用。因此,在这种情况下无需添加loadData

  3. 如果你还不清楚,请告诉我。