ねこトラッカー2.0.1
2015/04/18 20:34:19Noranekoです。
最近、Bライフブログ読んでます。
大昔、会社で暇でネット漁りしてる時に出会ったデイリーポータル Z以来のヒットで面白いです。
非常に人間らしい生き方をしてて良いと思います。
斯く言う私も昔から
『Work to Live』
という考えがあるので、
金額計算して割に合う残業はしてたけど、基本残業はしませんでしたね。
残業するより、知り合いから仕事もらってやった方がお金が良かったり、
プログラマという職業上、いろんな言語をやった人の方が遥かに優位なので、
会社でMS系、帰宅後にOpen系ということもやったりしてたので、
ほんと幅広くいろんな言語を触ってきたと思います。
ということで、ねこトラッカーを更新しました。
前回、googleマップへのリンクを入れましたが、
消しました!
私の持ってるメモリが少ない2.3.4端末だと、googleマップを立ち上げていろいろすると
ねこトラッカーがバックグラウンドで死んでしまっていました。
これはちょっと痛かったので、今回のでリンクを消させていただきました。
それとは別に、タスクバーへの通知(常駐型)を入れて、
ねこトラッカーへ簡単に戻れるようにしてみました。
が、はやり何かのきっかけで死んでしまうことがあります。
ですので、
調べてみたのですが、どうやらServiceという物を作って常駐させないとダメみたいです。
今回のバージョンで、通知を出したのですが
// NotificationBuilderを作成
NotificationCompat.Builder nc =
new NotificationCompat.Builder(this);
bla bla bla
// 通知する
NotificationManager nfm =
(NotificationManager)getSystemService(Service.NOTIFICATION_SERVICE);
nfm.notify(4649, nc.build());
↓
startForeground(4649, nc.build());
こんな感じにstartForegroundでやれば行けるみたいです。
が、私の今のやり方だと地図表示と現在地取得ロジックが同じクラスでかつ、
extends FragmentActivity
されております。
このstartForegroundするには、
extends Service
しなくてはいけません!
なんてこったい・・・
大規模仕様変更余儀なしですね。
今考えてるのが、現在地取得のところをServiceクラスで持たせて、
DB処理もここで呼んでやろうかなと。
そんで、Activityが死んでトラッキングをしていた場合、
今動いてるトラッキングServiceがあるかどうかの判別をして、
地図にトラッキング情報を再表示しなくてはいけませんね。
どこかに同Serviceは複数呼べない?みたいなことを書いてあったので対策はできるのかなと。
というかこの常駐方法としては、
①Serviceクラスを用いて、startForegroundする
②AIDLを用いてServiceと連携
という方法があるらしいです。
②をちょっと書いてみたけど理解しないままコピペしたので、よくわかんないので消しました。
が、
AIDLの消し方がよくわかんなくてエラーが出てコンパイルできなくなりました。
binの中にあるやつを消して再起動したらいけた気がします。
ということで次のアップデートは常駐を目標にします。
てか常駐型の通知出してて、onDestroy()通らないで死ぬってことに問題があるようなないような・・・
気に入ったら押してね
~こんなアプリ出してます~