質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

950閲覧

Swiftでバックグラウンド処理

Hayato1201

総合スコア220

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/09/02 02:30

編集2018/09/02 09:19

swiftでストップウォッチの様に時間を計り続けるという事をしたいです。

しかし、実機で時間を測り始めてバックグラウンドに切り替えてから少しするとアプリを開いた最初の画面に戻ってしまいます。これは何故でしょう?
因みにこちらのサイトを参考にAppDelegate.swiftの部分だけ編集しました。
https://qiita.com/SatoTakeshiX/items/8e1489560444a63c21e7

仮に時間を測り続けることができなかったとしても、一定時間たってバックグラウンドから戻ると画面遷移する前のアプリが開いたときの状態に戻ってしまうのだけでも何とかしたいです。。。

因みにデフォルトのアプリのストップウォッチの様なことはできないかと思っていましたが、あれは特別な様ですね。あのデフォルトのアプリの様に、バックグラウンドに行ったり閉じたりしても画面に経過時間を出し続ける様なものにしたいのですが、長時間バックグラウンドで動かす様なことは基本的にダメだという事なので、以下の様な流れを考えたのですがどうでしょうか?

  1. ローカルに測り始めたときの時間を保存する
  2. バックグラウンドから再開された時の処理に再度現在の時刻を取得する。
  3. その現在時刻 ー 開始時刻の差分を求めそこからまたカウントスタート&表示

以上な様な流れですが、確かバックグラウンドになったとかフォアグラウンドになったとか判定して処理をかけましたよね?それができれば以上の様な流れで実装できるのでは無いかと思ったのですがどうでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

バックグラウンドでの処理継続はHayato様のご認識の通りAppleがあまり推奨していませんね。。。
https://qiita.com/teamhimeH/items/51efb4fc68d3f1d2ebb9

バックグラウンドタスクの実行時間も180秒程度までということらしいです。(諸説あり??)

バックグラウンドに行ったり閉じたりしても画面に経過時間を出し続ける様なものにしたい

こちらについてはHayato様の考えているロジックで実現できると思います。
AppDelegateのライフサイクルについて調べると諸々情報出てくると思います。
https://qiita.com/mfujiwara/items/cf3d61a96cf4fdfc1162

本題のバックグラウンドから復帰後に画面がアプリ初回起動時の画面に戻ってしまう件ですが、アプリがクラッシュしているってことはありませんか?
実機でデバックして見て、エラーとなっていないかを確認して頂きたく。
基本的にアプリのフォアグランド、バックグラウンドの切り替えで画面がアプリ初回起動時の画面に戻ってしまうってことはないかなと。
他の可能性としては
・実機のメモリが切迫してしまったため、OSレベルでアプリのタスクをキルされてしまった。(多分可能性は低いですが)
・アプリケーションフォアグラウンド復帰時の処理で、アプリ初回起動時の画面を表示する処理を実行してしまっている。
とかですかね。。。

投稿2018/09/02 10:10

Tomochika_Tomo

総合スコア166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hayato1201

2018/09/02 12:56

アドバイスありがとうございます。書き方が悪かったですが、バックグラウンドから復帰後というのは時間が経つとバックグラウンドから復帰後に始めの画面になってしまっているという事です。しかしこれは考えてみれば殆どのアプリがそうですよね、バックグラウンドでの処理継続がそんなに長くできないからって事ですね、多分。。。?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問