У меня сегодня эта проблема не найдена и ничего не найдено. Мой сценарий следующий:Уведомление показывает, что приложение андроида закрыто силой
У меня есть приложение для Android, которое автоматически отвечает на входящие сообщения. У меня есть приведенный ниже код, чтобы создать постоянное уведомление (но не удаленное), а затем, когда приложение будет уничтожено с помощью onDestroy, уведомление будет удалено. Однако, когда я открываю панель ретентатов и удаляю приложение, приложение останавливает службу автоматического ответа, и приемник вещания останавливается, однако onDestroy не вызывается, и уведомление все еще отображается.
public void notifCreate() {
Intent i = new Intent(Main.this, Main.class);
PendingIntent pi = PendingIntent.getActivity(Main.this, 1, i, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationManager notifManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder notifBuilder = new Notification.Builder(getApplicationContext());
notifBuilder.setContentTitle(getString(R.string.app_name));
notifBuilder.setContentText(getString(R.string.notification));
notifBuilder.setContentIntent(pi);
notifBuilder.setSmallIcon(R.drawable.ic_launcher);
notifBuilder.setOngoing(true);
Notification notif = notifBuilder.getNotification();
notifManager.notify(1, notif);
}
public void notifDestroy() {
NotificationManager notifManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
loadPrefs();
}
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
@Override
protected void onPause() {
super.onPause();
notifCreate();
}
@Override
protected void onResume() {
super.onResume();
loadPrefs();
checkStates();
notifDestroy();
}
@Override
public void onDestroy() {
super.onDestroy();
notifDestroy();
service = false;
}
Моя цель заключается в следующем:
Я хотел бы просто уничтожить уведомление, если приложение силы закрыты и т.д., или, если это возможно, я бы не прочь приложение как услуга, так что даже когда прокатывается из ретентатов он все равно будет работать. Лучший сценарий будет, однако, когда мой широковещательный приемник работает (так что-то обнаруживает, когда он действительно работает), и всякий раз, когда он включен, выведите уведомление. Всякий раз, когда он не запускается, уведомление должно быть уничтожено. Если требуется больше кода и т. Д., Просто комментируйте, спасибо за помощь.
Не могли бы вы дать мне пример того, как это сделать? То, как я это делал, было единственным способом, каким я знал. Спасибо (: – sociallymellow
Все, что я говорю, используют тот же объект, который вы использовали для создания уведомления в notifDestroy. Удалите NotificationManager notifManager = (NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE), из метода notifDestroy и сделайте notifManager переменной уровня класса , так что все методы могут получить к нему доступ. – user2511882
Хорошо, это то, что я думал, что вы имели в виду, но просто убедитесь, что я постараюсь сделать это очень быстро, и если это сработает, я отвечу на ваш ответ, еще раз спасибо за помощь. – sociallymellow