Android8.0 启动 Service 的方法

Android8.0 开始系统后台的管理更严了,启动 Service 和之前比会复杂些。而且不再是后台 Service 而是前台 Service,目的应该是为了让用户知道此时有 Service 正在运行。

另外貌似一旦创建了一个 NotificationChannel,那这个 NotificationChannel 就会一直存在,即便删除了相关代码

创建 NotificationChannel 的步骤,你可以把它写在 Application 中:

    //需要创建 NotificationChannel
    private void createNotificationChannel(){
        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        //判断是不是 Android8.0
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            NotificationChannel channel = new NotificationChannel(
                    //字符串类型的 Channel id
                    CHANNEL_ID,
                    //字符串类型的 Channel name
                    CHANNEL_NAME,
                    NotificationManager.IMPORTANCE_DEFAULT);
            manager.createNotificationChannel(channel);
        }
    }

启动 Service 的方法:

Intent i = new Intent(context, MyService.class);
context.startForegroundService(i);

在 Service 中的处理:

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            Notification notification = new Notification.Builder(this, Constants.CHANGE_VOLUME_CHANNEL_ID).
                    setContentTitle("Service正在后台运行").
                    setSmallIcon(R.drawable.icon_check).
                    build();
            startForeground(1,notification);
        }

        return super.onStartCommand(intent, flags, startId);
    }

这些写完后在运行 App,启动 Service 后,就会在通知了上常驻一个通知,显示“Service正在后台运行”,直至 Service 销毁。

如果不想希望常驻通知,你可以试试 IntentService,使用方法和Service一样,我不太确定是不是真的不会常驻通知,但在我的项目中是没有常驻通知的。

有疑问和建议请告诉我哦😁

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如何能让我们的应用能够在系统后台持续地运行是一个自Android从娘胎里出来时就议论不停的话题,而且这似乎成了一个...
    骏骏的简书阅读 1,133评论 1 19
  • 【Android Service】 Service 简介(★★★) 很多情况下,一些与用户很少需要产生交互的应用程...
    Rtia阅读 3,176评论 1 21
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-androi...
    eddy_wiki阅读 3,306评论 0 20
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,041评论 19 139
  • 持续闷热的天气,说不出来的让人难受,稍稍活动一下,满身大汗,这且不说,就是傻傻的呆着,身体也是粘糊糊的,情绪随之低...
    虎笨笨阅读 358评论 0 0