Service

解决方案 »

  1.   

    Service常驻进程的办法有一些,提供一些思路:
    1)startForeground(NOTIFY_ID, notify);设置为前台活跃进程,提高优先级;
    2)BroadcastReceiver监听一些频繁的系统广播,比如开机事件、TIME_TICK(这个需要代码中动态注册)等;
    3)向系统注册一个系统闹铃,定时捕获闹铃广播,拉起本进程;
    4)做两个Service互保(这个有点流氓,不建议使用);
      

  2.   

    如果要自己写推送的话,你可以取看看MQTT,据说很省电
      

  3.   


    耗电方面呢?
    常驻进程的话,随时把最新的信息进行推送,是不是以为着耗电压力会大的很多了就??耗电的话不好说,这得看你的进程业务逻辑优化的如何,避免一些busy loop,精简网络交互步骤,精简报文内容等等;
    如果要使用即时消息传送、即时push消息的话,一般有两种方式:
    1)客户端主动去query,但是这样客户端要控制频繁、失败成功的业务逻辑等等,会比较耗电;
    2)使用长连接,这样比较省电,监听由系统去承担了,不需要你的上层代码中有loop之类的,但是在网络不稳定的手机上,长连接不稳定,要经常检查断开是否重新连接等等,如果策略不是很合理,未必更好用;
    你可以两者权衡一下,再去网上搜搜push、长连接等等文章瞧瞧;
    祝好运!
      

  4.   

    减少耗电
    1.无网络的时候,后台service要判断 然后主动断开连接
    2.当检测到网络广播的时候,再启动推送服务与服务器的连接
    3.精简传输指令,比如XML解析比JSON稍微要消耗多点内存和CPU,可考虑用byte array,减少传输带宽
    业务优化是关键,比如减少网络通信次数,添加SDCARD缓存等