如果我按下“全部清除”按钮,为啥我的前台服务会停止

Posted

技术标签:

【中文标题】如果我按下“全部清除”按钮,为啥我的前台服务会停止【英文标题】:Why my foreGround service stop if i press button "Clear all"如果我按下“全部清除”按钮,为什么我的前台服务会停止 【发布时间】:2021-04-15 09:31:16 【问题描述】:

我在清单中的许可

使用权限 android:name="android.permission.FOREGROUND_SERVICE"

服务是

android:stopWithTask="false"

onStartCommand 返回 START_STICKY 并创建此代码的通知

private void startForegroundService()

    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent pendingIntent =
            PendingIntent.getActivity(this, 0, notificationIntent, 0);

    Notification notification = null;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) 
        notification = new Notification.Builder(this, "SEX")
                        .setContentTitle("getText(R.string.notification_title)")
                        .setContentText("getText(R.string.notification_message)")
                        .setSmallIcon(R.drawable.ic_launcher_background)
                        .setContentIntent(pendingIntent)
                        .setTicker("ssss")
                        .build();
    else 
        notification = new Notification.Builder(this)
                .setContentTitle("getText(R.string.notification_title)")
                .setContentText("getText(R.string.notification_message)")
                .setSmallIcon(R.drawable.ic_launcher_background)
                .setContentIntent(pendingIntent)
                .setTicker("ssss")
                .build();
    
    startForeground(423, notification);


但是,如果我按下“全部清除”按钮,我的服务就死了,没有调用 onTaskRemoved

【问题讨论】:

【参考方案1】:

您需要的是一个ongoing notification,将其设置在您的Notification.Builder 对象上:

notification = ...
        ...
        .setOngoing(true)
        .build();

【讨论】:

它帮不了我

以上是关于如果我按下“全部清除”按钮,为啥我的前台服务会停止的主要内容,如果未能解决你的问题,请参考以下文章

按下按钮时停止动画

为啥当我按下返回按钮时我的程序崩溃

当我按下一个按钮时,“不幸的是我的应用程序已停止”[重复]

为啥异步不会停止重新创建列表视图?

按下主页按钮时如何停止服务?

为啥 KeyListener 仅在未按下按钮时才起作用?