16日からCOCOAのコラボレーターになってIssueやPRの対応をしています。

 先日の記事について、たくさんの方から激励の言葉をいただきました。ありがとうございます。 厚生労働省技術参与の着任から10日、コラボレーターになってから5日が経ちました。Twitterで普段しないエゴサをしたりしますと、やはりぼくの至らぬ点についてお叱りを受けていることも目に入ったりして反省しきりの日々です。

 今後も鋭意改善に努めて参りますので、何卒よろしくお願いいたします。

さて、今日はCOCOAに投稿されたIssueの中でぼくが特に勉強になったものを紹介します(すべてのIssueが勉強になっていますよ念のため)。

 ログのローテーションをAlarmManagerで実行しているのですが、AlarmManagerはいくつかのタイミングでキャンセルされるはず。再起動時はBOOT_COMPLETEDで処置しているけど、アプリのアップデート時は大丈夫? と言う内容になります。投稿者は@zipperpullさんです。いつもありがとうございます。

 検証とか必要なことは全部Issueのコメントに書いたので、詳しくはそっちを見てください。

 大事なのは、ぼく自身「AlarmManagerに設定したジョブはアプリのアップデートでキャンセルされる」と覚えていたことです。

 実際、この課題を検索すると「キャンセルされる」ことを裏付ける情報が見つかり、いくつかの対応策が提案されています。

 しかし、実際にコードで検証してみるとキャンセルされず、さらに調べてようやくAndroid 2.2以降では挙動が変わっているという情報を探し当てました。

 Android 2.2といえばリリースは2010年です。普段「ぼくはAndroidなら輝けるんだ」とかいっておきながら、この件に関してぼくの知識は10年以上も知識が更新されていなかったことになります。

 反省すると同時に、意外なところで知識を新しくできた喜びを感じています。

追伸:「いや、キャンセルされるぞ」って情報があったら教えてください。よろしくお願いいたします。