一般的なストップウォッチタイマーを含むOS Xアプリケーションを作成しています。私はNSTimer
を使用しています。私は、ユーザーがタイマーを起動し、長い時間(例えば、30分)後にそれに戻ってきて、タイマーがまだ動作していることを望みます。問題は、コンピュータが閉じているか眠っている間にタイマーが動作しなくなってしまっていることです。私はコンピュータを長時間開いていないようにしたくありません。この問題については、iOSアプリに関するいくつかのスレッドがありますが、OS Xに関連するものはありません(少なくとも見つけたものはありません)。誰でもこの問題の回避策を知っていますか?たとえば、iOSに付属の「時計」アプリの「ストップウォッチ」機能を模倣しようとしていますが、電話機ではなくラップトップを使用しています。電話機が長時間オフになっている場合でも、「時計」アプリのストップウォッチは継続して実行されます。Swift:コンピュータがスリープ中にNSTimerを実行し続ける(OSX)
0
A
答えて
0
私がこれを行う方法は、実際にはNSTimer
をバックグラウンドで実行するのではなく、アプリがバックグラウンドに入ってからフォーカスが戻ってくるまでにどれだけの時間が経過したかを調べることでした。デリゲートメソッドapplicationWillResignActive:
とNSApplicationDelegateのapplicationWillBecomeActive:
を使用:
let timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(self), userInfo: nil, repeats: true)
var resignDate: NSDate?
var stopwatch = 0
func update() {
stopwatch += 1
}
func applicationWillResignActive(notification: NSNotification) {
timer.invalidate()
resignDate = NSDate() // save current time
}
func applicationWillBecomeActive(notification: NSNotification) {
if resignDate != nil {
let timeSinceResign = NSDate().timeIntervalSinceDate(resignDate!))
stopwatch += Int(timeSinceResign)
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(self), userInfo: nil, repeats: true)
resignDate = nil
}
}
applicationWillResignActive:
アプリが焦点の外に出るたびに呼び出されます。この場合、現在の日付(NSDate()
)をresignDate
という変数に保存します。その後、アプリケーションがアクティブになったとき(誰がどれくらい長く時間を知っているかは関係ありません)、applicationWillBecomeActive:
が呼び出されます。次に、別のNSDate
の値を現在の時刻とし、現在の時刻からresignDate
までの時間を求めます。この時間を私の時間価値に加えた後、私はNSTimer
を再検証して、それを続けることができます。
関連する問題
- 1. コンピュータがスリープ中にMac OSX Lionがプッシュ通知を受け取ることはできますか?
- 2. 強制終了してもNSTimerを実行し続ける方法
- 3. スリープ中にOSXにUSBデバイスをマウントする方法は?
- 4. 他のコンピュータにSQLデータベースを実行中
- 5. Windows 10のスリープが起き続ける
- 6. 実行NSTimer回
- 7. Powershellの "画面" - 接続が中断してもプロセスを実行し続ける?
- 8. クエリの実行中にLaravelアプリケーションを使用し続ける
- 9. バックスタック中にフラグメントビューを実行し続ける
- 10. コンピュータがスリープ状態になり、Silverlightアプリケーション
- 11. アプリケーションの実行中にメモリ使用量が連続的に増加する(Swift)
- 12. Swift NSTimer Pause Resume
- 13. Android携帯電話がスリープしている間、機能を実行し続けますか?
- 14. NetLogo:実行し続ける
- 15. NSTimerをバックグラウンドで実行するには
- 16. NSTimerをバックグラウンドで実行するには
- 17. プロセスを実行し続けるには?
- 18. Wxwidgetsが別のコンピュータ上で実行中のバイナリを実行する
- 19. NSTimerでSwiftのgetTimeElapsed
- 20. OSX/Swift最先端のアプリケーションを実行する
- 21. Python:メインスレッドを継続的に実行中、バックグラウンドで実行中
- 22. プログラムの実行中に連続して実行するテスト
- 23. Swift NSTimerが変数構文を渡す
- 24. Julia - スクリプトを実行してインタープリタを実行し続ける
- 25. NSTimerとメインスレッドでセレクタを実行する
- 26. アプリをバックグラウンドで実行し続ける
- 27. バックグラウンドでアクティビティを実行し続ける
- 28. アプリをフォアグラウンドで実行し続ける
- 29. Weexをバックグラウンドで実行し続ける
- 30. モバイルデバイスがスリープしても実行を続行するにはどうすればよいですか?