見出し画像

Flutterメモ:ライフサイクルは必ずしもpaused→resumedの順番ではない

ライフサイクルを使って実装しているのですが、pausedにはならずにresumedになることがあることに考えが及びませんでした。

だから注意しようね、という自分用のメモですm(_ _)m

ライフサイクルとは?

大雑把にいうと、アプリを開いているか閉じているか等のことです。
例えば、ホーム画面に移った、スリープになった、アプリに戻った、を検知できます。

Flutterの主なライフサイクル
・inactive:操作できない不活化状態。電話がかかってきた時、コントロールセンターを開いたときなど。
・paused:画面にアプリが表示されておらず、操作できない状態。バックグラウンドの状態。
・resumed:画面にアプリが表示されていて操作できる状態。

↓ライフサイクルの詳細は公式ページへ


当初、アプリを閉じた時(paused)に値をセットして、アプリを開いた時(resumed)にpausedでセットした値を使って計算する、という実装にしていました。

resumedになるには、その前に必ずpausedがあると思っていたんですが、実際にはpausedを介さずにinactiveからresumedになることがありました。

pausedにならない例
・アプリを開いた状態でコントロールセンターを開く(inactive)→コントロールセンターを閉じる(resumed)

テストをしているときに気づいてよかった...

以上、ありがとうございました

この記事が気に入ったらサポートをしてみませんか?