6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

アプリが新規にインストールされたら、IntentServiceを呼んでログを吐く

Last updated at Posted at 2014-12-25

前回ServiceをAIDLを使って弄ぶ練習、前々回(端末に新規アプリがインストールされたらログを吐く)に引き続き、 IntentService の利用方法とか、ほとんど覚えていないので、メモを残す。

概要

前回、Serviceを使ってみたけど常駐する必要はなかったので、IntentServiceを実装すれば充分かなという自己完結。
こいつはキューがなくなったら自分でdestroyするみたいで、明示的にServiceをstopする必要もなく、楽ちんだし便利ぽい。work queue processorパターンとかいうみたい。

アプリが新規にインストールを検知したら、IntentServiceを起動してオシマイって流れが、シンプルかなと思う。
ここでは単純にログを吐いているだけだが、何か裏側で重い処理をしようってんなら、この作りでいいんじゃまいか。

実装

GitHubにサンプルソースを置きました

だいたい下記ファイルを眺めればわかるかと。

AndroidStudioでIntentServiceを生成したら、
勝手にヘルパーメソッドを作成してくれて、サンプルを作る分には楽だった。

レシーバはアプリと同じプロセスにし、サービスは別プロセスにした。

AndroidManifest.xml
<service
    android:name=".services.ShoutIntentService"
    android:enabled="true"
    android:exported="false"
    android:process=":shout" />

<receiver
    android:name=".receivers.AppInstalledObserveReceiver"
    android:enabled="true"
    android:exported="false">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED" />

        <data android:scheme="package" />
    </intent-filter>
</receiver>
6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?