ウェブサイトのデータをスクレイピングし、必要に応じてユーザーに通知するサービスがあります。
私が抱えている問題は、サービスが閉じるとすぐに通知が消えることです (これは即座に発生する可能性があります)。以下のコードは、アプリが持つすべての通知コードです。通知をキャンセルするためのコードは入れていません。
public static void CreateNotificationCompat(int notificationID, String link, String title, String text, Context ctx)
{
Intent notificationIntent = new Intent("android.intent.action.VIEW", Uri.parse(link));
PendingIntent contentIntent = PendingIntent.getActivity(ctx.getApplicationContext(), 0, notificationIntent, 0);
NotificationManager nm = (NotificationManager) ctx
.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx);
Resources res = ctx.getResources();
builder.setContentIntent(contentIntent)
.setSmallIcon(R.drawable.notify_icon)
.setWhen(System.currentTimeMillis())
.setContentTitle(title)
.setContentText(text)
.setAutoCancel(false);
Notification n = builder.getNotification();
nm.notify(notificationID, n);
}
それが違いを生む場合(そうではないことは確かです)、私はここでアプリケーションコンテキストを使用しています。
私のサービスは定期的に開始され、Web サイトを処理し、必要に応じて通知してから閉じます。
サービスの最後に、stopSelf() を呼び出す代わりに、30 秒ほどスリープしてから stopSelf() を呼び出します。その後、通知は 30 秒間表示された後、消えます。通知が消えた時点で、関連するものが logcat に表示されません。
これまでのところ、ICS を使用してテストすることしかできませんでした。