私はSamのTeach Yourself iPhone devを見ていますが、backgroundingの例はわかりません。非バックグラウンド化コードは次のとおりです。beginBackgrounTaskWithExpirationHandlerを使用してバックグラウンドで実行するものを選択的に指定する方法:
- (void)viewDidLoad {
[super viewDidLoad];
count=0;
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
}
そしてバックグラウンド化バージョンは次のとおりです。
- (void)viewDidLoad {
[super viewDidLoad];
counterTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
// If you're worried about exceeding 10 minutes, handle it here
}];
count=0;
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
}
私は理解していない何の関連が背景とbeginBackgroundTaskWithExpirationHandlerで実行されるアクティビティ間にある場所です。
NSTimerがバックグラウンドで実行されている。この例では - しかし、どのようないくつかの他のアクティビティがあった場合、すなわちだけでなく、バックグラウンドで実行されることはコードがあるとします
- (void)viewDidLoad {
[super viewDidLoad];
counterTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
// If you're worried about exceeding 10 minutes, handle it here
}];
count=0;
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
x: some other activity to be performed in the background
maybe another timer with a difference time interval
}
あなたはさらに指定することができますどのようにそのxもバックグラウンドで実行されますか?
また、どのように動作しているのか誤解していますか?beginBackgrounTaskWithExpirationHandlerが呼び出されると、実際にバックグラウンドで実行されるアプリケーション全体です。その場合、アプリであるタスクを1つしか起動できないため、タスク識別子が必要なのはなぜですか?
これが当てはまらず、さまざまなタスクを選択してバックグラウンドで実行することが可能な場合、これはどのように実装されていますか?この例では、Xが別の間隔と異なる期限切れ条件を持つ第2のタイマーであると仮定しますが、TheTimerとxの両方をバックグラウンドで実行したければ、コードはどのように見えますか? theTimerとtheTimer2の両方がバックグラウンドで実行するように指定する方法を
- (void)viewDidLoad {
[super viewDidLoad];
counterTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
// If you're worried about exceeding 10 minutes, handle it here
}];
count=0;
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
theTimer2=[NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(aDifferentMethod)
userInfo:nil
repeats:YES];
theTimer3=[NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector:@selector(anotherDifferentMethod)
userInfo:nil
repeats:YES];
}
しかしtheTimer3はしていません。つまり、コードはこのだったらどう?