2016/07/22

Service

Androidでは、よくあるViewが表示されるアプリとは別に、Serviceというバックグラウンド処理を行うクラスを実装することができる。
Serviceはバックグラウンド処理を行うのに都合がいい機能が幾つか実装されている。


前置き


  1. Activityがバックグラウンドに移動しても、Serviceは動き続ける。
  2. Activityが終了した場合でも動き続けるような設定ができる。(正確には、Activity終了時にServiceを立ち上げ直しているもよう)
  3. Serviceの立ち上げ方は2種類あり、それによって挙動やライフサイクル、Activityとの通信方法などが異なる。
  4. ServiceはActivityなどと別のプロセスではない
  5. Serviceは多重起動はできない。

4に関しては、Activityと同じスコープで実装・ビルドしている以上、そうなのかなと思ったが、
よく考えたら、Activityが落ちた後もずっと動いてるし、その後またActivityが立ち上がったらどうなるの...?と思った。

Serviceはライフサイクルが特殊なので、いろいろテストをして確認した結果も踏まえて、使用方法をまとめた。


2016/07/17

Android Backup Service

詳しい話はここに書いてあるけど英語だし。。。
なので、実装した上での経験も含めてまとめた。


前置き

Android Backup ServiceはAndroid2.2から実装された、Androidアプリのデータバックアップの仕組み。
BackupManagerというクラスを通して、バックアップを行う。
主な特徴は下記の通り。

  1. バックアップ内容は、保存したい内容をbyte列にしてwriteする方法と、ファイルやSharedPreferencesを指定する方法がある。
  2. ファイルに関しては、基本的にはContext.getFilesDir()のパス内に保存されているデータを指定できる。(それ以外にもできるという記事がよそにありますが)
  3. バックアップのタイミングは指定できない。(OSが定期的にバックアップを行う)
    できるのは対象データが変更されたのを通知することのみ。
  4. リストアもタイミングを指定できないとあるが、実際に実装してみたらアプリ側でリクエストしたらすぐに処理が始まるっぽい。
  5. 画像やテキストデータでもバックアップ可能。データ容量制限は記載がない。
  6. 最終的にバックアップを行うかどうかはユーザがAndroid端末の設定アプリから設定できる。

3のため、ゲームのセーブデータ共有などには向かない。(セーブしたタイミングでバックアップが走るとは限らないので)
4は実際に試したところ、そんな感じの挙動だった。

2016/07/11

Androidのアプリデータバックアップ事情

アプリを製作していると、たまにデータの引き継ぎの話になる。
iOSでは、ある程度はiTunesのバックアップでデータまで引き継ぎできるので、まーこれでいいか、となるが、Androidではどうなのか?

アプリデータバックアップに関しては
  1. バックアップアプリを使用する。
  2. Android Backup Serviceに対応するよう実装する。
  3. 独自にサーバとクライアントモジュールを実装する。
などがあげられる。
(公開アプリ前提なので、Root化が必要な方法は除外)

2016/07/06

起動

何度目かのブログをはじめて、何度目かのAboutページを作ったけど、コンテンツもないのに著作権を明示して若干の気恥ずかしさを感じますね。