即使我强行关闭我的应用程序,我的通知也不会消失

时间:2017-05-29 17:30:07

标签: android notifications

即使我强行关闭我的应用,我的通知也不会消失。 ,即。当我打开多任务窗口并将其滑出时,我的持续通知不会消失。

这是我的通知填充方法:

public void populateNotification(Boolean bool) {
    int notifyID = 1;
    notificationBuilder = new NotificationCompat.Builder(MainActivity.this);
    notificationBuilder.setSmallIcon(R.mipmap.ic_launcher_round);
    notificationBuilder.setContentText("Set Content Text");
    notificationBuilder.setContentTitle("Set Content Title");
    notificationManager = (NotificationManager) getBaseContext().getApplicationContext().getSystemService(NOTIFICATION_SERVICE);
    if (bool) {
        notificationManager.notify(notifyID, notificationBuilder.build());
    } else {
        notificationManager.cancel(notifyID);
    }

这是我的onDestroy方法:

`
public void onDestroy() {
        if (cameraAPIself != null) {
            cameraAPIself.destroyCamera();
        }
        if (cameraAPI2self != null) {
            cameraAPI2self.destroyCamera();
        }
        populateNotification(false);
        super.onDestroy();
    }`

基本上我的应用程序所做的是它显示闪光灯开启时的通知。但当我强行关闭我的应用程序,即。当flash处于ON状态时(填充通知时),通知不会消失,因为不需要通知,因为应用程序不再处于活动状态。任何人都可以在这里指导我

1 个答案:

答案 0 :(得分:1)

调用onDestroy()并不总是有效。

onDestroy不保证始终被调用(参见here)。

(" 如果优先级较高的应用需要内存&#34,则应用程序进程被终止;)

此外,关于Activity Lifecycle的文档必须说明onDestroy方法:

  

在某些情况下,系统会简单地杀死活动   托管过程中没有调用此方法(或任何其他方法),所以   它不应该被用来做那些意图留下来的东西   过程消失后。

使用服务

所以你可以做的是,创建一个服务(不是粘性),在该服务中覆盖onTaskRemoved()方法,并在该方法中调用您的通知取消。

这是文档中关于onTaskRemoved -

的说明
  

如果服务当前正在运行且用户有,则调用此方法   删除了来自服务应用程序的任务。