前台服务通知中的notify()之前未被线程锁定的对象

时间:2018-06-17 08:10:05

标签: android notify foreground-service

从android O你不能创建简单的后台服务,它必须是前台,所以我按照教程并构建了一个,但是,我收到了这个错误:

    Unable to start service ...SMSService@302fa17 with Intent 
{ cmp=...SMSService (has extras) }: java.lang.IllegalMonitorStateException: 
object not locked by thread before notify()

我在这里看到了一些其他主题,但这些都是旧通知

这是我的代码:

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

        Notification mNotification = new NotificationCompat.Builder(this, CHANNEL_ID)
                .setContentTitle("Content Title")
                .setContentText("Content Text")                                                                                 
                .setSmallIcon(R.drawable.ic_check)
                .setContentIntent(mPendingIntent)
                .build();

            startForeground(1, mNotification);
            mNotification.notify();

1 个答案:

答案 0 :(得分:1)

当您尝试在特定对象上调用notify()时,它会唤醒正在等待此对象监视器的单个线程。

由于您没有锁定任何主题,因此您不必使用mNotification.notify();。删除startForeground(1, notification);

至于显示通知import android.preference.DialogPreference就足够了