Androidアプリで、K-9 Mail UnreadCountというアプリを作って公開しています。
https://market.android.com/details?id=net.madroom.k9uc
このアプリ、メール受信時に、unread表示数が増えます。
K-9 Mailに複数アカウントを設定している場合は、合計unread数を表示します。
対して、unread数が減るタイミングなのですが、未読が既読になった瞬間。
ではありません。
通知領域から新着メールを開いて、home画面に戻っても、unread数は減りません。
でも、WidgetからK-9 Mailを起動して、新着メールを開くと、unread数は減ります。
この挙動について、簡単に、書いておきます。
メール受信のタイミングは、BroadcastReceiverでキャッチできます。
でも、未読が既読になった時は、無理でした。
contentObserverでも、無理でした。
もちろん、本当は出来るのだけど、僕の調査不足。という可能性もあります。
では何故、WidgetからK-9 Mailを起動して、新着メールを開くとunread数が減るのか。
となりますが、実はWidgetタップ時はK-9 Mailを起動していません。
透明Activityを起動しています。
そして、透明Activityが自動的に、K-9 Mailを起動しています。
webのredirectみたいな感じです。
こうすることで、K-9 Mailを終了した時、透明ActivityのonRestart()が呼ばれます。
onRestart()は即座にfinish()して、onDestroy()でunread数の再取得、Widgetの更新。
という実装になっています。
https://github.com/mp-android/K9MailUnreadCount
Activityのライフサイクルを、うまく使えたかなー。みたいな感じのアプリです。
でも、いつか、通知領域から開いても、ちゃんと更新されるようにしたいものです。
開発の経緯は、Gmail公式アプリが外部アプリのアクセスを遮断して頭に来たから。
ですかね。。。
No comments:
Post a Comment