日記#289#290

#289 5月15日

まずはアラームマネージャーがちゃんとセットしているかを確認した。
今回は15分間隔でデータを記録するようにした。

アラームマネージャーを起動させた後はアプリは起動せず、バックグラウンド状態(終了させずにアプリ履歴に残したままの状態)にもしないで確認を行っている。

1回目は大体15分だった。

2回目は30分あたりに起動しなかったが、ロック画面を開くとデータを取得した。

3回目は上手くいった。

よってアプリを毎回起動せずとも0時更新ができるようになったことが分かる。

次の問題は、センサー値の取得がonReceiveの処理が終了する段階にあることだ。

Writeope_finishedがonReceive処理の最後に出るログ

これではファイルに日付+歩数のデータを書き込む段階で歩数が取得できない。

最初は並行して処理していると思っていたのでonReceiveの処理を少し遅らせてその間にonChangeSensorが終了するかと思っていたのだが、結局はログの流れの通りで、onReceive内でセンサー値の取得(onChangeSensor)を発動するとonReceiveの終了時にセンサー値を取得ができる。

そのため、ログを書き込む関数をonChangeSensor内に入れることで上手く処理することができた。

今日最後の問題は最初の起動(インストール直後の起動)をして歩くと、2回目のアプリ起動時に前回の歩いた値で上書きしてしまう事象が発生してしまうことだ。

初回起動後
2回目起動後
175483で上書きしてしまっている

これは初回起動時にアラームマネージャーをセットするためにonChangeSensorを発動させる。
すると、センサー値を取得する際にアラームマネージャーで起動させたonChangeSensorで値を取得し続けてしまうので、2番目の問題の解決策としてonChangeSensor内に入れたデータ書き込み関数も一緒に起動してしまっていたのだ。

SendMessageでアラームマネージャーを起動
その後はセンサー値を取得するたびにWriteOpe Finishedという
データの書き終わりを教えてくれるログが出現してしまっている

最初はonReceiveが繰り返していると思っていたのだが、繰り返しているのはonChangeSensorだけなので、1回データを書き込んだら2回目はスルーするように条件分岐させるだけで解決させることができた。

明日は0時更新を見守る会なので今日はここで終了。
0時更新の際にアラームマネージャーからデータ書き込み用の条件分岐用フラグがリセットされることも確認する必要がある。

#290 5月16日

今日は0時更新を見守る会を行った。
結果は負け。
センサー値の取得はできたが、書き込みが発動しなかった。

始めは電池が少ないことが原因だと思っていたのだが、どうやらそうではないらしい。
そこから原因究明に動こうと思った矢先すごく困ったことが起きた。

それは、インストールすると消しているはずのデータが復活してしまうということだ。
しかもこれはアプリを削除しているにも関わらず起きてしまう。
ものすごく困るので原因を知りたい。

アプリを削除してインストールしているにもかかわらず、
4/28のデータを持ったデータ記録ファイルが既に作成された状態で起動する

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