在Android Oreo 8.0应用程序将在通知到来时从后台前景

时间:2018-05-22 15:14:18

标签: android notifications android-8.0-oreo

当应用程序处于通知状态时处于后台状态时,我的应用程序即将到达前台,但此行为不会发生在已杀死状态。 这不会发生在oreo之下。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, getString(R.string.app_name), NotificationManager.IMPORTANCE_HIGH);
    notificationManager.createNotificationChannel(mChannel);
}

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this,CHANNEL_ID)
        .setSmallIcon(R.drawable.tracking_app_logo)
        .setContentTitle(getString(R.string.app_name))
        .setContentText("Uploading database...")
        .setContentIntent(pendingIntent)
        .setAutoCancel(false)
        .setChannelId(CHANNEL_ID)
        .setOngoing(true)
        .setPriority(NotificationCompat.PRIORITY_HIGH);


startForeground(102, mBuilder.build());

2 个答案:

答案 0 :(得分:1)

发生的事情是您在自己的活动上下文中创建通知,而不是从后台服务启动通知,因此如果您不杀死应用程序,您将能够看到通知,因为上下文是还活着,可以创建通知。

您应该使用AlarmManager来安排通知,因为您在自己的活动环境中使用它,我建议您阅读有关AlarmManager服务以及如何通过通知完成通知。< / p>

有关如何实现这一目标的好文章可以在这里找到 http://droidmentor.com/schedule-notifications-using-alarmmanager/

它是如何工作的基本:

首先设置后台服务,例如AlarmManager,以便在后台启动应用的通知

AlarmManager会为通知设置时间,即使应用程序被终止,它也会启动您的通知,因为AlarmManager是在系统后台运行的服务。

另一个提示是将Firebase云消息服务与NotificationCompat结合使用;您只需在清单中实现此服务即可在后台运行通知

<service
    android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

检查Firebase消息文档:https://firebase.google.com/docs/cloud-messaging/android/client

答案 1 :(得分:0)

很抱歉,如果你发现这个答案无关紧要,我发布了这个,因为我认为你正在使用推送通知,但现在我认为你正在申请中发出通知,让我知道我是否再次朝着错误的方向前进。 / p>

您可以通过以下方式在应用程序中生成通知。

  1. 闹钟管理器: 在此,您可以指定需要通知的时间,以便在满足要求时,您可以将广播传递给应用,以便触发事件

    例如:https://developer.android.com/reference/android/app/AlarmManager

  2. 服务: 在此,您可以启动将在后台运行的粘性服务,当条件满足时,您的广播将被解雇,您可以显示您的通知

    例如:https://developer.android.com/reference/android/app/Service

  3. 作业调度程序: 通过使用此功能,您还可以显示要显示的通知

    例如:http://www.vogella.com/tutorials/AndroidTaskScheduling/article.html

  4. 如果您仍然遇到此问题,请浏览此链接:

    https://medium.com/exploring-android/exploring-background-execution-limits-on-android-oreo-ab384762a66c