- 작성시간 : 2014/06/17 18:35
- 퍼머링크 : gsstudio.egloos.com/4351984
- 덧글수 : 3
startForeground(ID_FOREGROUND, mBuilder.build());
뭐 이런 식으로 서비스를 실행하고 난뒤
NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(0, "hello", System.currentTimeMillis());
notification.setLatestEventInfo(context, "title", "text", null);
nm.notify(ID_FOREGROUND, notification);
nm.cancel(ID_FOREGROUND);
Notification 관련 메소드는 deprecated되었는데, 귀찮아서 안바꿨다. (아, 이것때문에 되는건가?) 양해를.
그냥 cancel 하면 먹질 않는데, 한번 위에 덧(?)씌우고 나면 잘된다.
foreground로 서비스가 유지되는지 확인도 완료. 참고 페이지.
http://www.androidpub.com/829786
엑스페리아z2에서는 재부팅하며 위의 소스를 실행했을때 notify되고 cancel되는게 빠른지 foreground 알림이 남아있는 경우가 있었다.
원인 찾기 귀찮아서 사이에 sleep 10 정도 두는걸로 해결했다;;
다만... 저래도 서비스가 죽을땐 죽는다는거.
죽지않는, 죽어도 되살아나는 좀비 프로세스를 만들다 헛발질해서 나온 희귀한 결과라 일단 기록.
언제까지 이 코드가 먹을지 모르겠지만, 킷캣에서도 잘 돌아가니 아마도 쫌 오랫동안 먹을듯.
덧글
.setSmallIcon(R.mipmap.l_launcher)
.setColor(Color.parseColor("#ffffff"))
.setWhen(System.currentTimeMillis())
.setContentTitle("카우치그램");
startForeground(1, mBuilder.build());
CompositeSubscription subscription = new CompositeSubscription();
subscription.add(Observable.empty()
.delay(5, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.newThread())
.subscribe(new Subscriber<Object>() {
@Override
public void onCompleted() {
LogUtils.v("DEBUG110", "onCompleted");
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(getApplicationContext());
NotificationCompat.Builder cancelmBuilder = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.mipmap.l_launcher)
.setColor(Color.parseColor("#ffffff"))
.setWhen(System.currentTimeMillis())
.setContentTitle("카우치그램");
notificationManager.notify(1,cancelmBuilder.build());
notificationManager.cancel(1);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object o) {
}
}));
5초뒤에 사라지게 했는데 ㅠㅠ 동작이 되지않네요 혹시 제가 잘못한건가여?