android9.0以上当切换程序后,service在后台运行一分钟左右就自动停止的解决方案 |
您所在的位置:网站首页 › 安卓怎么关闭后应用运行 › android9.0以上当切换程序后,service在后台运行一分钟左右就自动停止的解决方案 |
service作为安卓四大组件之一,在开发项目中很多人都会用到,不知道大家有没有发现,在android9.0以上的系统,如果你在app启动了一个service,当你切换到另一个app时,在之前的安卓系统service还是会在运行的,但是当升级到android9.0的系统,你会发现,service在后台运行一分钟左右就会自动停止了,下面来给大家介绍一下如何使service一直在后台运行: 首先我们来了解一下官方文档上android9.0默认关掉后台运行的service的原因: 1、在后台运行应用会消耗设备的有限资源,如内存或者电池电量,进而影响用户的使用体验,比如说,后台任务可能会缩短设备的续航时间,或者在用户玩游戏、看视频或拍照时造成系统卡顿。 2、为了改善续航表现和用户体验,Android 在版本演进的过程中,针对后台执行进行了不同程度的限制,其中包括: 低耗电模式和应用待机模式: 如果设备未插接电源,处于空闲状态一段时间且屏幕关闭,系统会进入低耗电或者待机模式,并对 应用行为施加相应限制; 后台位置限制: 对后台应用获取用户当前位置的频率进行限制; 后台服务限制: 限制应用在后台运行服务,并禁止应用通过隐藏/不可见方式调用 CPU 或网络资源; 近期新增特性及优化项: (1) 应用待机群组: 限制非活跃应用对设备资源的调用; (2) 后台限制: 当系统检测到应用出现不良行为时, 系统会向用户询问是否要限制该应用在后台访问设备资源; (3) 省电助手功能优化。 解决思路: Service启动时创建一条通知,与其绑定,这样锁屏或者后台Service都不会被暂停或杀死。 创建一个service类,在onCreate方法里执行如下代码: private String notificationId = "serviceid"; private String notificationName = "servicename"; private void showNotification(){ notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //创建NotificationChannel if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ NotificationChannel channel = new NotificationChannel(notificationId, notificationName, NotificationManager.IMPORTAN CE_HIGH); notificationManager.createNotificationChannel(channel); } startForeground(1,getNotification()); } private Notification getNotification() { Notification.Builder builder = new Notification.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("title") .setContentText("text"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { builder.setChannelId(notificationId); } Notification notification = builder.build(); return notification; } 注意要加上这个权限: 以上方法就可以使service一直在后台运行了。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |