Android - 如何使用API -28的startForegroundService()和startForeground()?

问题描述 投票:0回答:1

我目前正在研究如何创建浮动前景气泡聊天服务。 但是,我注意到我试图使用的所有库都不适用于API-28。 我相信这是由于here in the Android docs提到的新限制。 它基本上表明,如果我正在调用一个在前台显示事物的服务: 我必须打电话给startForegroundService()而不是startService()。 此外,它指出: “系统创建服务后,应用程序有五秒钟的时间来调用服务的startForeground()方法,以显示新服务的用户可见通知。” 我相信这可能是我无法让这些前景聊天库工作的原因。 有人可能提供一个我应该如何实现这些的例子吗? 谢谢,麻烦您了!

android service android-service android-8.0-oreo foreground-service
1个回答
1
投票
@Override
public void onCreate() {
    mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    // Android O requires a Notification Channel.
    if (Build.VERSION.SDK_INT >= 26) {
        CharSequence name = getString(R.string.app_name);
        // Create the channel for the notification
        @SuppressLint("WrongConstant")
        NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, NotificationManager.IMPORTANCE_LOW);
        // Set the Notification Channel for the Notification Manager.
        if (notificationManager != null) {
            notificationManager.createNotificationChannel(mChannel);
        }

        startForegroundService(new Intent(ForegroundService.this, ForegroundService.class));
        //We only need to call this for SDK 26+, since startForeground always has to be called after startForegroundService.
        startForeground(NOTIFICATION_ID, getNotification());
    }
    else {
        startService(new Intent(ForegroundService.this, ForegroundService.class));
    }

此外,该项目是开始实现ForegroundService的良好基础:

https://github.com/googlesamples/android-play-location/tree/master/LocationUpdatesForegroundService

© www.soinside.com 2019 - 2024. All rights reserved.