即使我强行关闭我的应用,我的通知也不会消失。 ,即。当我打开多任务窗口并将其滑出时,我的持续通知不会消失。
这是我的通知填充方法:
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状态时(填充通知时),通知不会消失,因为不需要通知,因为应用程序不再处于活动状态。任何人都可以在这里指导我
答案 0 :(得分:1)
调用onDestroy()并不总是有效。
onDestroy不保证始终被调用(参见here)。
(" 如果优先级较高的应用需要内存&#34,则应用程序进程被终止;)
此外,关于Activity Lifecycle的文档必须说明onDestroy方法:
在某些情况下,系统会简单地杀死活动 托管过程中没有调用此方法(或任何其他方法),所以 它不应该被用来做那些意图留下来的东西 过程消失后。
使用服务
所以你可以做的是,创建一个服务(不是粘性),在该服务中覆盖onTaskRemoved
()方法,并在该方法中调用您的通知取消。
这是文档中关于onTaskRemoved
-
如果服务当前正在运行且用户有,则调用此方法 删除了来自服务应用程序的任务。