外部のServiceと連携してほげほげしたい場合、 AIDL使ってバインドする例がよくあるよね。 外部ServiceをstartService()する人少ないけど、やったらできたよって話。 Serviceに値渡すだけとかならこの方が気楽かも。 1.Service側の実装 Serviceはふつうに実装してね。 編集するのはマニフェストで、 外部に公開するからandroid:exportedをtrueにしてもらって、 Intentfilter追加するよ。 <service android:name=".HogeService" android:exported="true"> <intent-filter> <action android:name="com.android.hoge.HogeService" /> </intent-filter> </service> 2.呼び側 呼ぶ人はほ
---更新終わり。↓下から本文�--- 単純にonResume/onStartでバックグラウンド復帰時の処理を書くとActivityの生成時やバックキーで戻ってきた時等、処理しなくていいタイミングでもコードが走ってしまいます。 ActivityManager#getRunningAppProcessesで実行中のプロセスを取得し、アプリのforeground/backgroundステータスを見ることもできますが、一部端末でうまく動作しないことがあるようです(そもそもbackground/foregroundを判定するためだけに実行中のプロセスを全部調べるのもアホくさい気がします)。 そこで、API14(ICS)から追加された、Application.ActivityLifecycleCallbacksを利用します。このAPIを利用すると、すべてのActivityのライフサイクルを監視し、任
開始状態 startService()の呼び出しでサービスを開始すると、サービスは"開始状態"となります。 "開始状態"となったサービスは、システムからkillされるか明示的に終了しない限り停止しません。 バインド状態 bindService()を呼び出してサービスにバインドすると"バインド状態"となります。 バインドされたサービスは、バインドしたコンポーネントとの双方向通信やメッセージに よるやりとりを提供します。 "バインド状態"のサービスは全てのコンポーネントがらアンバインドされることで停止し ます。 開始+バインド状態 サービスがstartService()とbindService()両方で起動されると"開始状態"かつ "バインド状態"となります。 この状態のサービスは、両方の状態の停止条件を満たした場合に停止します。 つまり、全てのコンポーネントからアンバインドされてもstopS
ユーザーに嫌われる常駐 Service の作り方。 Service が停止されるタイミングはいくつかあるので その全てで Service を再起動するようにすれば常駐サービスを作ることはできます。 Service が停止される場合とその対処法アプリがアップデートされて Service が停止する場合以下の記事の BroadcastReceiver で startService する。 [Android]アプリがアップデートしたことを検知するBroadcastReceiver | DevAchieve 端末が再起動されて Service が停止している場合以下の記事の BroadcastReceiver で startService する。 [Android]端末の起動完了を検知するBroadcastReceiver | DevAchieve OSがメモリなどのリソースが少なくなり Serv
Flag indicating that if the described PendingIntent does not already exist, then simply return null instead of creating it. テスト方法 テスト方法は、 1.ログを出力するだけのHogeIntentServiceを呼び出すIntentを生成 2.putExtra()で任意のIDを設定 3.Pending.getService()でPendingIntentオブジェクトを生成 4.10秒後に実行されるようAlarmManagerへセットする 5.1~4をIDを変えて3回おこない、どの順でAlarmManagerから呼ばれるか確認する 実行したコードは下記の通りです。 HogeIntentService.java public class HogeIntentService
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext()); builder.setSmallIcon(R.drawable.icon); builder.setContentTitle("Title"); // 1行目 builder.setContentText("Text"); // 2行目 builder.setSubText("SubText"); // 3行目 builder.setContentInfo("Info"); // 右端 builder.setWhen(1400000000000l); // タイムスタンプ(現在時刻、メール受信時刻、カウントダウンなどに使用) builder.setTicker("Ticker"); // 通知到着時に通知
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く