我有一个活动,显示通知栏上的通知。如果用户按下主页按钮进入后台,我会保留通知(这就是我需要的),但是当用户关闭应用程序时,我需要取消通知,这就是我的问题。
我怎么能处理这个?每当用户进入后台然后关闭应用程序时,我需要从通知栏中删除通知,但如果用户将应用程序保留在后台,我需要通知。
你创建它时,你的通知就是一个ID,对吧?
然后,您所要做的就是使用该ID取消它。 例如:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.cancel(4);
当他们退出你的应用程序或你对你的活动调用完成()时,会触发销毁。
我创建了一个永远运行的异步任务,现在当我从最近的列表中删除应用程序时,会调用onDestroy。
如果我们在onTaskRemoved()方法中取消通知,可以取消通知,在该方法中执行mNotificationManager.cancel(NOTIFICATION_ID),因为每次都不调用onDestroy方法。它对我来说很好。
你需要创建一个服务,然后Override
这个方法;并确保将其复制到onCreate
方法,因为该服务可能会在关闭时重新启动。
@Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancelAll();
}
这可能听起来很奇怪,解决这个问题,但它适用于我,它适用于所有版本的Android。如果在应用程序中的任何位置都有游标加载器,则每次关闭应用程序时都会调用onLoaderReset方法。
@Override
public void onLoaderReset(Loader<Cursor> loader) {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancelAll();
myRecyclerAdapter.swapCursor(null);
}