たまたんのぶろぐ

たまたんが時たま言いたいことを書いてます。ジャンルはめっちゃええ加減ですwソフトやプログラムのことが多いかもしれませんが。。。。。

バックグラウンド動作のライフサイクルについて

 

OpenCVの関係を書こうかと思ったら、かなりコアなことを書いてしまうので、

仕事に支障を出してはいけないのでやめにした。つか、まとめられん!!(^_^;)

 

 

 

あ〜、それで、ふと、昔作った音楽演奏中に時間がきたら停止するアプリ「TimerMusicStop(無料)」が、バックグラウンドに対応してないのを思い出した。

(さりげなく宣伝。。。。。w)

 

そういや、iOS4以上からバックグラウンド対応してたんだっけなぁ〜〜〜ってな。

ん?そういや、どうやってやるんだっけ?あれ?あっ、マルチタスキングですよね。

 

すんませんが、やり方は、ググってくだされ、私よりわかりやすく書いてくれてる人がいっぱいいますんで。。。

(実を言うとググってすぐみつからんかったので勘弁してください。m(__)m)

 
っで、どれくらいで止まるのかバックグラウンドのライフサイクルを調べてみました。
 
1秒間に1カウント上がってログをはき出す数分で書けるソースを書いて動作してみました。
 
-------------------------------

 

- (void)onTimer:(NSTimer*)timer 

{

    lbl.text = [NSString stringWithFormat:@"%d",++count];

    NSLog(@"count = [%d]" , count);

}

 

- (IBAction)start_down:(id)sender 

{

    count =0;

    NSTimer *timer;

    timer = [NSTimerscheduledTimerWithTimeInterval:(1

                                             target:self selector:@selector(onTimer:)

                                           userInfo:nil repeats:YES];

}

 

-------------------------------
 
 
画面はこんな感じで。。。。。 

f:id:tama-jp:20120725191301p:plain

 
「start」ボタンを押したあとすぐホームボタンを押して、
どれくらいでカウントが止まるか試してみました。。。。
 
噂では、10分ぐらいで止まると聞いてのですので、
予想では、10分×60秒 = 600秒ということで、
600カウント前後で停止するだろうと。。。。
 
実行。。。。ポチッと。。。。結果のログを以下に。。。。
 
 
 
 
 
 
 
2012-07-25 18:42:14.111 BackGround[9024:707] -[applicationDidBecomeActive:]
2012-07-25 18:42:18.302 BackGround[9024:707] count = [1]
2012-07-25 18:42:19.300 BackGround[9024:707] count = [2]
2012-07-25 18:42:19.519 BackGround[9024:707] -[applicationWillResignActive:]
2012-07-25 18:42:19.541 BackGround[9024:707] -[applicationDidEnterBackground:]
2012-07-25 18:42:20.301 BackGround[9024:707] count = [3]
2012-07-25 18:42:21.301 BackGround[9024:707] count = [4]
2012-07-25 18:42:22.301 BackGround[9024:707] count = [5]
2012-07-25 18:42:23.301 BackGround[9024:707] count = [6]
2012-07-25 18:52:09.301 BackGround[9024:707] count = [592]
2012-07-25 18:52:10.301 BackGround[9024:707] count = [593]
2012-07-25 18:52:11.301 BackGround[9024:707] count = [594]
2012-07-25 18:52:12.301 BackGround[9024:707] count = [595]
2012-07-25 18:52:13.301 BackGround[9024:707] count = [596]
2012-07-25 18:52:14.301 BackGround[9024:707] count = [597]
 
ここで止まりました。(* ̄- ̄)ふ〜ん
 
「applicationDidEnterBackground」というのが、
バックグラウンドに行ったときに呼び出される関数です。
597-3=594カウントですので、だいたい10分ですね。
 
予想通りの停止時間なんでくそ面白くないですなぁw。。。。
 
実を言うと、これはあくまで目安で、
立ち上がっているアプリのメモリ占有率により
早くなったり遅くなったりするようで、
「長くて10分ぐらいしか動作しない」と言うことだそうです。
 
今回も、内容が薄かったな。。。。。(^_^;)
 
ではでは。。。。