当应用程序关闭时创建通知
我使用的是onDestroy
方法,我学到的方法在应用程序关闭时并不总是被调用。这给我造成了一个问题,我希望每次关闭应用程序时都会弹出通知。有一个更好的方法吗?顺便说一句,onStop
和不适合我,因为我的应用程序作为后台服务运行。有趣的是,我的onDestroy
方法每次运行我的后台服务时都会起作用,但每当它关闭时,只要应用程序界面打开,我的onDestroy
就不会被调用。这似乎很奇怪,因为我认为onDestroy
没有被调用,如果设备缺乏资源,运行我的服务将占用更多的资源。 IDK。任何帮助,将不胜感激!当应用程序关闭时创建通知
`@Override
public void onDestroy(){
super.onDestroy();
Log.d("asdasd","asdasdasdasdasd");
if(notif.isChecked()) {
Intent intent1 = new Intent(this, MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
Notification noti = new Notification.Builder(this)
.setContentTitle("S-Dimmer")
.setContentText(getResources().getString(R.string.sDimmerStopped))
.setSmallIcon(R.drawable.ic_action_name1)
.setContentIntent(pIntent).getNotification();
noti.flags = Notification.FLAG_NO_CLEAR;
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify(0, noti);
doas.isRunning = false;
}
}`
这种方法并不总是被调用,所以你应该尝试从后台服务,因为还有一些销毁过程警报。 所以请尽量做你想要的服务。
的onDestroy()可以或可以不被任何给定的活动或服务调用。一般的规则是调用onDestroy(),或者进程终止,或者代码崩溃。
你没有。无论何时,用户或操作系统可能会因任何原因终止进程。当发生这种情况时,您可能会或可能不会使用onDestroy()调用。虽然您可以通过服务上的onTaskRemoved()稍微提高成功率,但这本身已被证明不可靠,并且不会覆盖所有方案。
你正在做错误的方式。在方法的onDestroy所有其他东西之前应该super.onDestory()来实现
试试这个
@Override
public void onDestroy(){
Log.d("asdasd","asdasdasdasdasd");
if(notif.isChecked()) {
Intent intent1 = new Intent(this, MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
Notification noti = new Notification.Builder(this)
.setContentTitle("S-Dimmer")
.setContentText(getResources().getString(R.string.sDimmerStopped))
.setSmallIcon(R.drawable.ic_action_name1)
.setContentIntent(pIntent).getNotification();
noti.flags = Notification.FLAG_NO_CLEAR;
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify(0, noti);
doas.isRunning = false;
}
super.onDestroy();
}`
onTaskRemoved()
{
if(notif.isChecked()) {
Intent intent1 = new Intent(this, MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
Notification noti = new Notification.Builder(this)
.setContentTitle("S-Dimmer")
.setContentText(getResources().getString(R.string.sDimmerStopped))
.setSmallIcon(R.drawable.ic_action_name1)
.setContentIntent(pIntent).getNotification();
noti.flags = Notification.FLAG_NO_CLEAR;
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify(0, noti);
doas.isRunning = false;
}
}
看着这个,发现[这个](https://stackoverflow.com/questions/41744933/android-ondestroy-isnt-called-when-i-close-the-app-from-the-recent-apps-button? rq = 1)感谢您的帮助! Upvoted –
Upvoted,谢谢。 –
不,你其实是错的......把super.onDestroy放在哪里并不重要,因为有时整个方法不会被触发。 – mhdjazmati