Android8.0适配前台定位服务service的示例代码-创新互联

从Android 8.0开始系统为实现降低功耗,对后台应用获取用户位置信息频率进行了限制,每小时只允许更新几次位置信息,详细信息请参考官方说明。按照官方指引,如果要提高位置更新频率,需要后台应用提供一个前台服务通知告知。

目前成都创新互联公司已为成百上千的企业提供了网站建设、域名、网站空间绵阳服务器托管、企业网站设计、楚雄州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

所以原来的单单使用locationManager获得当前位置在后台情况下无法使用了。于是打算使用一个前台服务,当app在后台时也能获得当前位置。


查了几篇博客说前台服务需要在service的onStartCommand方法中调用startForeground(int, Notification)才能开启前台服务。


但是onStartCommand需要走startservice()的生命周期才会调用。


我改用了bindservice() 正好需要activity和service交互,当然两个启动方法混用也可以。但是没有必要。


我需要的只是和控件绑定的service并且不想处理服务的结束操作。

1、activity / fragment调用 绑定服务


Intent serviceIntent = new Intent(this, ForegroundLocationService.class);
bindService(serviceIntent, conn, Service.BIND_AUTO_CREATE);
// 绑定服务时要求传入一个ServiceConnection实现类的对象
// 绑定服务时,会触发服务的onBind方法,此方法会返回一个Ibinder的对象给activity / fragment的onServiceConnected(),通过这个对象可以访问服务中的方法
  ServiceConnection conn = new ServiceConnection() {
    @Override
    public void onServiceDisconnected(ComponentName name) {
    }
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
    }
  };

当前标题:Android8.0适配前台定位服务service的示例代码-创新互联
分享地址:http://bzwzjz.com/article/ddscie.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 网站设计 重庆企业网站建设 企业网站设计 成都定制网站建设 网站建设开发 重庆网站建设 自适应网站设计 成都网站制作 响应式网站设计方案 营销网站建设 成都网站建设 成都网站制作 成都网站制作 手机网站制作设计 响应式网站设计 成都网站建设 企业网站设计 成都网站建设 LED网站设计方案 成都网站建设 成都网站制作