当前位置: 首页 > 知识库问答 >
问题:

android应用强制关闭后显示通知

夏俊人
2023-03-14

我今天一直在谷歌上搜索,但什么也找不到。我的场景如下:

我有一个Android应用程序可以自动回复收到的消息。我有下面的代码来创建一个持久的(不可刷的)通知,然后当应用程序通过onDestroy被销毁时,通知被移除。然而,当我打开recents面板并将我的应用程序扫走时,应用程序会停止自动回复服务,广播接收器也会停止,但onDestroy没有被调用,通知仍然可见。

public void notifCreate() {
    Intent i = new Intent(Main.this, Main.class);
    PendingIntent pi = PendingIntent.getActivity(Main.this, 1, i, PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationManager notifManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    Notification.Builder notifBuilder = new Notification.Builder(getApplicationContext());

    notifBuilder.setContentTitle(getString(R.string.app_name));
    notifBuilder.setContentText(getString(R.string.notification));
    notifBuilder.setContentIntent(pi);
    notifBuilder.setSmallIcon(R.drawable.ic_launcher);
    notifBuilder.setOngoing(true);
    Notification notif = notifBuilder.getNotification();
    notifManager.notify(1, notif);
}

public void notifDestroy() {
    NotificationManager notifManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notifManager.cancelAll();
}

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
    loadPrefs();
}

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

@Override
protected void onPause() {
    super.onPause();

    notifCreate();
}

@Override
protected void onResume() {
    super.onResume();

    loadPrefs();
    checkStates();
    notifDestroy();
}

@Override
public void onDestroy() {
    super.onDestroy();

    notifDestroy();
    service = false;
}

我想简单地销毁通知,如果应用程序是强制关闭等,或如果可能的话,我不介意应用程序是一个服务,所以即使从最近刷卡,它仍然会运行。然而,最好的情况是,当我的广播接收器运行时(所以不知怎么检测它什么时候实际工作),当它打开时,显示一个通知。当它不运行时,应该清除通知。如果需要更多的代码等只是评论,感谢任何帮助的家伙。

共有1个答案

姜乐家
2023-03-14

据我所知,您正在创建一个新的NotificationManager对象来创建通知,并创建一个不同的NotificationManager对象来取消通知。您应该使用相同的对象。按照您的操作方式,您没有使用notifDestroy()中的对象激发任何通知,因此可能无法为您清除通知。

 类似资料:
  • 仅当应用程序关闭时,数据有效负载的使用不会收到任何通知,并且不会触发消息接收方法。 在下图中显示数据负载,单击此处查看参数 回复是点击这里查看回复 响应成功1,但在redmi手机中未收到任何通知。

  • 问题内容: 这是我第一次尝试在我的应用中添加广告。我已阅读在线文档并逐字阅读。现在,我唯一不了解的部分是如何实际请求广告并将其添加到我的应用中。 到目前为止,这似乎很好。我要做的其他任何事情都将被迫关闭。例如,添加以下行: 我已将AdListener实现到Activity。 顺便说一句,当我将鼠标悬停在导入的类上时: 或其他类似的类,它表示:注意:该元素既没有附加源,也没有附加Javadoc,因此

  • 问题内容: 我已经能够在我的应用程序中成功实现“共享首选项”,但是如果我通过任务管理器杀死该应用程序,就会遇到重置/删除数据的问题。 我使用的是静态方法进行保存,因此我只需要使用一次该方法,就可以在我的应用程序中的任何地方调用它。 一旦我杀死了我的应用程序,我的所有数据都将恢复为SharedPreferences保存方法中的默认设置。 我也进行了一些搜索,发现一些帖子说将android:persi

  • 我只是在我的一个android应用程序上实现admob。我请求admob在应用程序菜单屏幕上显示间隙广告。但在那个时候,如果我退出应用程序

  • 我试图在应用程序关闭时使pushkit voip消息正常工作。当应用程序位于前台或后台时,这些呼叫就会工作并显示出来。但在用户强制终止应用程序后,当收到通知时,应用程序终止,并发出信号9(由用户/ios终止)。 如何解决此问题? 我已经在我的应用程序中启用了后台获取、voip、音频和推送通知。还尝试删除所有Unity方法,将Callkit调用放在PushRegistry方法中,在接收通知时创建新的

  • 我的任务是设置警报,以触发接收器在特定时间显示通知。 如果应用程序是打开的或只是在后台,代码就可以完美地工作。 在应用程序被杀死时,当执行警报时仍然可以触发接收器。 但是,没有显示通知。 我能做什么? 报警功能: 报警接收器 显示xml