应用关闭时创建通知

Creating notification when app is closed

我正在使用 onDestroy 方法,据我所知,当应用程序关闭时并不总是调用该方法。这给我带来了一个问题,我希望每次关闭应用程序时都能弹出通知。有一个更好的方法吗?顺便说一句,onStoponPause 不适合我,因为我的应用程序作为后台服务运行。有趣的是,每当我的后台服务为 运行 时,我的 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;
    } 
}