应用程序从后台关闭后取消通知

问题描述 投票:6回答:5

我有一个活动,显示通知栏上的通知。如果用户按下主页按钮进入后台,我会保留通知(这就是我需要的),但是当用户关闭应用程序时,我需要取消通知,这就是我的问题。

  • 我试图取消关于onDestroy的通知,但它没有被解雇。
  • 我试图为通知设置setOngoing为true。

我怎么能处理这个?每当用户进入后台然后关闭应用程序时,我需要从通知栏中删除通知,但如果用户将应用程序保留在后台,我需要通知。

android android-notifications android-lifecycle
5个回答
2
投票

你创建它时,你的通知就是一个ID,对吧?

然后,您所要做的就是使用该ID取消它。 例如:

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.cancel(4);

当他们退出你的应用程序或你对你的活动调用完成()时,会触发销毁。


1
投票

我创建了一个永远运行的异步任务,现在当我从最近的列表中删除应用程序时,会调用onDestroy。


0
投票

如果我们在onTaskRemoved()方法中取消通知,可以取消通知,在该方法中执行mNotificationManager.cancel(NOTIFICATION_ID),因为每次都不调用onDestroy方法。它对我来说很好。


0
投票

你需要创建一个服务,然后Override这个方法;并确保将其复制到onCreate方法,因为该服务可能会在关闭时重新启动。

@Override 
public void onTaskRemoved(Intent rootIntent) {
    super.onTaskRemoved(rootIntent);
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.cancelAll();
}

0
投票

这可能听起来很奇怪,解决这个问题,但它适用于我,它适用于所有版本的Android。如果在应用程序中的任何位置都有游标加载器,则每次关闭应用程序时都会调用onLoaderReset方法。

@Override
public void onLoaderReset(Loader<Cursor> loader) {

    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.cancelAll();

    myRecyclerAdapter.swapCursor(null);

}
© www.soinside.com 2019 - 2024. All rights reserved.