Service----前台Service

2018-11-07  本文已影响0人  爱做梦的严重精神病患者

 Service的系统优先级是比较低的,当系统出现内存不足的情况时,就有可能会回收掉在后台运行的Service。如果希望Service可以一直保持运行状态,而不会由于系统不足的原因导致被回收,可以考虑使用前台Service

前台Service普通Service最大的区别就在于,它会一直有一个正在运行的图标在系统的状态栏显示,下拉状态栏后可以看到更加详细的信息,非常类似于Notification的效果

 启动前台Service需要使用startForeground()方法,这个方法接收两个参数,第一个参数是Notification的id第二个参数是构建出的Notification对象。在8.0以上的系统中,还需要创建NotificationChannel

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        String channelId = "channel";
        String channelName = "channel_name";
        NotificationChannel channel = new NotificationChannel(channelId,
                channelName, NotificationManager.IMPORTANCE_HIGH);
        channel.enableLights(true);
        channel.setLightColor(Color.RED);
        channel.setShowBadge(true);
        channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
        manager.createNotificationChannel(channel);

        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        Notification notification = new Notification.Builder(this, channelId)
                .setChannelId(channelId)
                .setContentTitle("有新消息来了")
                .setWhen(System.currentTimeMillis())
                .setAutoCancel(true)
                .setContentText("哈哈哈啊哈")
                .setSmallIcon(R.drawable.ic_launcher_background)
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_foreground))
                .setContentIntent(pendingIntent)
                .build();

        startForeground(1, notification);
上一篇下一篇

猜你喜欢

热点阅读