应用关闭时创建通知
Creating notification when app is closed
我正在使用 onDestroy
方法,据我所知,当应用程序关闭时并不总是调用该方法。这给我带来了一个问题,我希望每次关闭应用程序时都能弹出通知。有一个更好的方法吗?顺便说一句,onStop
和 onPause
不适合我,因为我的应用程序作为后台服务运行。有趣的是,每当我的后台服务为 运行 时,我的 onDestroy
方法都会起作用,但只要它关闭,并且只有应用程序界面打开,我的 onDestroy
就永远不会被调用。这看起来很奇怪,因为我认为如果设备缺少资源,则不会调用 onDestroy
,而 运行 我的服务会占用更多资源。同上。如有任何帮助,我们将不胜感激!
`@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;
}
}`
这个方法并不总是被调用,所以你应该从后台服务尝试,因为还有一些销毁进程警报。
所以请尝试在服务中做任何你想做的事情。
Please check out this ..
onDestroy() 可能会也可能不会在任何给定的 activity 或服务上被调用。一般规则是要么调用 onDestroy(),要么您的进程终止,要么您的代码崩溃。
你不知道。您的进程可能随时因任何原因被用户或 OS 终止。发生这种情况时,您可能会或可能不会被 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;
}
}
我正在使用 onDestroy
方法,据我所知,当应用程序关闭时并不总是调用该方法。这给我带来了一个问题,我希望每次关闭应用程序时都能弹出通知。有一个更好的方法吗?顺便说一句,onStop
和 onPause
不适合我,因为我的应用程序作为后台服务运行。有趣的是,每当我的后台服务为 运行 时,我的 onDestroy
方法都会起作用,但只要它关闭,并且只有应用程序界面打开,我的 onDestroy
就永远不会被调用。这看起来很奇怪,因为我认为如果设备缺少资源,则不会调用 onDestroy
,而 运行 我的服务会占用更多资源。同上。如有任何帮助,我们将不胜感激!
`@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;
}
}`
这个方法并不总是被调用,所以你应该从后台服务尝试,因为还有一些销毁进程警报。 所以请尝试在服务中做任何你想做的事情。
Please check out this ..
onDestroy() 可能会也可能不会在任何给定的 activity 或服务上被调用。一般规则是要么调用 onDestroy(),要么您的进程终止,要么您的代码崩溃。
你不知道。您的进程可能随时因任何原因被用户或 OS 终止。发生这种情况时,您可能会或可能不会被 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;
}
}