현재 소리를 재생할 앱을 제작 중입니다. 사용자가 소리를 내면 다음 코드로 상태 표시 줄 알림을 표시합니다.Android : 애플리케이션 종료 수신
notificationManager = (NotificationManager) activity.getSystemService(Activity.NOTIFICATION_SERVICE); Intent intent = new Intent(activity, MyActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(activity, 0, intent, 0); notification = new Notification(); notification.icon = android.R.drawable.stat_notify_sync; notification.flags |= Notification.FLAG_ONGOING_EVENT; String title = activity.getString(R.string.notification_title); String text = activity.getString(R.string.notification_text); notification.setLatestEventInfo(activity, title, text, pendingIntent);
괜찮습니다. 나중에 사용자가 모든 소리를 중단하면 notificationManager.cancel을 사용하여 알림을 제거하고 다시 정상적으로 작동합니다.
내 문제는 내가 작업 킬러 애플 리케이션을 사용하는 사람의 사건을 처리하고 싶다는 것입니다. 누군가 내 앱을 죽이기 위해 하나를 사용한다면 상태 표시 줄에서 알림 아이콘을 제거하고 싶습니다. 나는 많은 사용자들이 그런 종류의 앱을 사용하기를 좋아하고 어떤 사람들은 내 앱을 "닫을"수 없다고 불평하기를 원치 않는다.
지금까지 앱이 종료 될 때를 감지하지 못했습니다.
Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { notificationManager.cancel(NOTIFICATION_ID); } });
을 그리고이 : 나는 이것을 시도했습니다
Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { notificationManager.cancel(NOTIFICATION_ID); } });
하지만이 작동하지 않습니다. 내 앱이 죽으면 알림 아이콘이 계속 표시됩니다. 내 응용 프로그램을 죽이려면 "Advanced Task Killer"라는 응용 프로그램을 사용하고 있습니다. 또한 DDMS 내에서 프로세스를 종료하여 테스트했습니다.
나는 네이티브 미디어 플레이어가 그렇게하고 있다는 것을 알아 냈습니다. 음악이 재생되고 음악 서비스를 종료하면 아이콘이 사라집니다.
그래서 알림 아이콘을 제거 할 수 있도록 응용 프로그램을 종료하려고 할 때를 감지하는 방법이 있습니까? 아니면 내 앱이 죽으면 알림 아이콘이 자동으로 제거되는 방법이 있습니까?
감사합니다.
귀하의 응용 프로그램은 알림을 관리 할 수 있습니다 (다만 단어 "문서"를 클릭). 응용 프로그램이 종료되면 더 이상 아무것도 실행하지 않습니다. 'application.onTerminate()'와 같은 것이 호출되지 않습니다. 서비스를 즉시 다시 시작한 다음 알림을 관리하거나 알림을 플래그로 표시하여 응용 프로그램이 더 이상 실행되지 않을 때 시스템에서 제거하도록하는 방법을 찾아야합니다. –