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

当应用程序被终止时,如何在状态栏上保持通知?

蒙墨竹
2023-03-14

当我长按home键并杀死我的应用程序时,通知从状态栏中删除,但我想在应用程序被杀死时保留它,当应用程序被杀死时,如何在状态栏上保留通知?

共有3个答案

岑叶秋
2023-03-14

你的通知需要由我关闭的活动之后仍然存在的东西拥有,比如服务。创建一个管理通知的小型服务。您的活动可以向服务发送意图,或直接通过连接绑定到服务并调用方法,以修改通知的状态。

我在手机上,所以不能轻易构建一个例子...敬请关注。^_^

隆向晨
2023-03-14

在需要通知服务的地方创建一个方法,如下面的活动或片段中的方法。然后在那里调用这个方法。

private void buildNotification(){

    Intent intent = new Intent(getActivity(), NotificationReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);

    AlarmManager am = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, myCalendar.getTimeInMillis(), pendingIntent);
}

现在创建一个类(我在这里创建了NotificationReceiver.class),它扩展了BroadcastReceiver,如下所示。

public class NotificationReceiver extends BroadcastReceiver{

private static final int NOTIFICATION_ID = 1991;

@Override
public void onReceive(Context context, Intent intent) {

    int num = 0;

    Intent contentIntent = new Intent(context, MainActivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_ONE_SHOT);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    builder.setSmallIcon(R.drawable.ic_notifications_black_24dp);
    builder.setContentTitle("your title.");
    builder.setContentText("your text.");
    builder.setContentIntent(pendingIntent);
    builder.setTicker("ticker text.");
    builder.setAutoCancel(true);
    builder.setOnlyAlertOnce(true);
    builder.setDefaults(Notification.DEFAULT_ALL);
    builder.setNumber(++num);

    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(NOTIFICATION_ID, builder.build());
    }
}

这会解决你的问题。

使现代化

我忘了提一下,您还必须在AndroidManifest中添加receiver。xml

<receiver android:name=".NotificationReceiver"/>

i、 e.你必须将你的文件放入接收器

邢起运
2023-03-14

你能做的就是使用:

startForeground()

注意:如果终止服务会对用户造成干扰,例如您的服务正在执行背景音乐播放,您可以设置此标志,以便用户注意到他们的音乐是否停止播放。

例1

例2

为了阻止这种使用:

停止前景()

注意:从前台状态删除此服务,如果需要更多内存,则允许终止它。

希望这对你有帮助。

 类似资料:
  • 手动设置“自动取消”标志 改用builder.build() notificationmanger取消(id)和/或取消所有 使用NotificationCompat.Builder 对setContentIntent使用常规启动意图,而不是手动调用StartActivity

  • 我创建了一个简单的聊天应用程序,在接收者离线时向他发送推送通知。 正如我在标题中所说,当应用程序被终止时,我无法通过推送通知正确传递消息。实际上,当iPhone接收到推送通知并且应用程序被终止时,甚至application:didReceiveMemoteNotification:fetchCompletionHandler也不会被触发(如其他示例和apple文档中所示)。 然而,我的应用程序与W

  • 我使用Firebase控制台发送通知到我的Android设备,它的工作正常时,应用程序是在后台或前台状态。但它没有收到的通知在被杀死的状态,因为我没有附加任何数据,它不应该是一个数据通知。

  • ...有点。正如这个极其简单的例子所示, 我的一个应用程序很少以这种方式崩溃(到目前为止只报告过一次)。当一个不确定的异常发生时,我想像往常一样终止它。我的策略是(低级)记录问题,然后终止。应用程序是子系统的一部分,如果检测到任何问题,我想(重新)启动它。它是用C -Builder 6构建的,在Windows (XP)上运行...7,也是8)。我了解到< code>abort()很可能导致了这个错

  • 我正在制作一个Android锁屏应用程序。我的问题是状态栏。我在Androidanifest.xml上写了这一行。Android:主题="@Android:风格/主题。NoTitleBar。全屏"但是用户可以在没有应用程序的情况下滚动状态栏并解锁手机。那么如何完全隐藏状态栏呢?

  • 问题内容: 我试图确保脚本仍在开发服务器上运行。它整理统计数据并提供Web服务,因此应该可以持续使用,但是一天几次,它会由于未知原因而死掉。当我们注意到我们只是再次启动它时,但是后部很痛苦,有些用户没有权限(或专有技术)来启动它。 我内的程序员想花几个小时来解决问题的根源,但内心的忙碌的人认为必须有一种简便的方法来检测应用程序是否未运行,然后重新启动它。 我知道我 可以 通过grep cron-s