要实现Android前台服务显示多个通知,可以通过创建多个通知通道来实现。每个通知通道都可以显示一个独立的通知。
以下是一个示例代码,演示如何在一个前台服务中显示多个通知:
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.Build;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.support.v4.app.NotificationCompat;
public class MyForegroundService extends Service {
private static final String CHANNEL_ID_1 = "channel_1";
private static final String CHANNEL_ID_2 = "channel_2";
private NotificationManager notificationManager;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
createNotificationChannels();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 在这里根据需要显示多个通知
showNotification1();
showNotification2();
// 返回START_STICKY,确保服务在被杀死后能够自动重启
return START_STICKY;
}
private void createNotificationChannels() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 创建第一个通知通道
NotificationChannel channel1 = new NotificationChannel(
CHANNEL_ID_1,
"Channel 1",
NotificationManager.IMPORTANCE_DEFAULT
);
channel1.setDescription("This is Channel 1");
notificationManager.createNotificationChannel(channel1);
// 创建第二个通知通道
NotificationChannel channel2 = new NotificationChannel(
CHANNEL_ID_2,
"Channel 2",
NotificationManager.IMPORTANCE_DEFAULT
);
channel2.setDescription("This is Channel 2");
notificationManager.createNotificationChannel(channel2);
}
}
private void showNotification1() {
// 创建第一个通知
Notification notification1 = new NotificationCompat.Builder(this, CHANNEL_ID_1)
.setContentTitle("Notification 1")
.setContentText("This is Notification 1")
.setSmallIcon(R.drawable.ic_notification)
.build();
// 启动前台服务并显示第一个通知
startForeground(1, notification1);
}
private void showNotification2() {
// 创建第二个通知
Notification notification2 = new NotificationCompat.Builder(this, CHANNEL_ID_2)
.setContentTitle("Notification 2")
.setContentText("This is Notification 2")
.setSmallIcon(R.drawable.ic_notification)
.build();
// 显示第二个通知
notificationManager.notify(2, notification2);
}
}
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 启动前台服务
startService(new Intent(this, MyForegroundService.class));
}
}
请注意,以上示例中创建了两个通知通道(CHANNEL_ID_1和CHANNEL_ID_2),并在MyForegroundService中的onStartCommand方法中显示了两个通知(showNotification1和showNotification2)。可以根据需要添加更多的通知通道和通知。
希望这个示例能帮助到你!
上一篇:Android前台服务数量限制
下一篇:Android前台服务通知延迟