数年前にメールクライアントアプリとか、SNSアプリで課金処理を作成したときに、
ServiceやBroadcastReceiverを使ったんだけど、
ほとんど覚えていないので、 BroadcastReceiver の超簡単なサンプルを作成したのでメモを残す。
結論
こいつを設定すればok
他にも Standard Broadcast Actions って分類で、色々と種類があって、端末起動時にアプリ起動とかもできるぽい。
今回のサンプルソースはgithubに置きましたココ
もう少し解説してみる
AndroidManifest.xmlに書いてみたんだけど、下記に該当部分のみ抜粋した。
の定義をみていて、 android:exported をfalseで追加することにした。こいつを設定することにより __BroadcastReceiverを無効化__しておく。必要になったタイミングで起動すれば良いわけだし。
<receiver
android:name=".receivers.AppInstalledObserveReceiver"
android:exported="false"
android:process=":remote">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
ちなみに、android:process=":remote"
と書くとアプリと別プロセスで起動する。
ココとかココを見る限り、生成したreceiverはonReeceiverしている間のみで、フォアグラウンドプロセスで起動している。
たぶん、この中でService以外の非同期処理を実行しても、想定と異なるタイミングでプロセスが終了すると思うので注意が必要ぽい。