无论app状态如何,都要调用延迟15秒的方法

时间:2015-06-04 05:38:36

标签: ios objective-c nstimer

我需要每隔15秒调用一个方法,无论是否存在任何事实,无论是foreground中的任何视图控制器,是background还是killed,我需要随时打电话。

我知道我可以使用NSTimer

执行延迟任务
NSTimer* myTimer = [NSTimer scheduledTimerWithTimeInterval: 15.0 target: self
                               selector: @selector(callAfterFifteenSeconds:) userInfo: nil repeats: YES];

但是,我想知道在哪里实施它以便它可以满足我的条件。我想我可以在App Delegate中使用它,但我需要一个指导,以便正确实现它。

3 个答案:

答案 0 :(得分:1)

在App Delegate类中调用它是正确的位置,但它不适用于以下情况。

  • 如果您的应用被从背景中杀死,它将无效。
  • 它不会连续处于后台模式。操作系统将在一段时间后停止该过程。

答案 1 :(得分:1)

- 如果应用程序被杀,你就无法做任何事情。

- 当应用程序处于后台时,操作系统可能会在一定时间间隔后终止该进程(我相信它是15秒)。

虽然您可以在应用程序处于后台时注册位置更改。在这种情况下,您的应用会继续接收位置更新(例如谷歌地图)。

public void readIncassiOLG(String filename, List<String []> itemsToCheck) {
    String[] answers = {"", "not "};
    CSVReader reader = new CSVReader(new FileReader(filename), CSV_SEPARATOR);
    List<String []> body = reader.readAll();
    for (String[] item : itemsToCheck) {
        for (String[] bodyItem : body) {
            int present = Arrays.equals(bodyItem, item) ? 0 :  1;
            System.out.println(String.format("Item %spresent", answers[present]));
        }
    }
}

答案 2 :(得分:-1)

     [NSThread sleepForTimeInterval:4.0f];
     dispatch_async(dispatch_get_main_queue(),
                    ^{
               //write you code if you want fire any method after 4 sec//          

                    }
                    );