Я пытаюсь поместить уведомление в строку состояния при запуске службы и сохранить ее там, пока я не остановлю службу, но исчезнет через несколько секунд (около 10). Любые предложения относительно того, чего я не хватает? Это работало до того, как я попытался перезаписать с помощью notification.builder для совместимости с api 15. Запись журнала показывает, что onDestroy не вызывается до тех пор, пока я не остановлю службу, чтобы она все еще работала.onGoing уведомление исчезает через несколько секунд
public class MyService extends Service {
private NotificationManager mNM;
private int NOTIFICATION = R.string.service_started;
public void onCreate() {
super.onCreate();
mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
showNotification();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("MyService", "Service Started");
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mNM.cancel(NOTIFICATION);
Log.e("MyService", "Service Ended");
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
private final IBinder mBinder = new LocalBinder();
private void showNotification() {
Notification.Builder builder = new Notification.Builder(getApplicationContext());
builder.setAutoCancel(false)
.setOngoing(true)
.setSmallIcon(R.drawable.myicon)
.setTicker(getText(R.string.service_label))
.setWhen(System.currentTimeMillis())
.setContentTitle(getText(R.string.service_started))
.setContentText(getText(R.string.service_label));
Notification notification = builder.getNotification();
mNM.notify(NOTIFICATION, notification);
}
Является ли ваше обслуживание разрушенным по какой-то причине? Я вижу, что в onDestroy вы удаляете свое уведомление. Где вы называете showNotification()? – petey
К сожалению, я должен был отредактировать эту строку при вставке вопроса. showNotification вызывается в onCreate. Запись в журнале, отображаемая в onDestroy, отображается только при завершении службы с помощью stopService, уведомление просто исчезает примерно через 10 секунд, и служба все еще работает. – Scott
Следует добавить, что это сработало, как и ожидалось, с setLatestEventInfo, который обесценился, и я пытаюсь переписать его с помощью notification.builder. – Scott