不幸的是,在这方面有一个坏消息和一些好消息。
坏:
由于android棉花糖及以上版本,因此有了打ze模式的概念。如果设备保持放置状态一段时间(无法确认其持续时间,并且未由Google披露),则设备将进入打do模式并暂停所有网络活动。维护时段短,您可以在其中执行同步和操作。较小的解决方法,不要针对23种以上的api,我说的很小,因为我观察到这在某些手机上不起作用。另一种可能绕过此方法的方法是将您的应用从电池限制列入白名单,但是根据Google指南,我认为您的应用不符合要求。
更糟糕的消息是,从API 26开始,当应用程序完全处于后台并且没有可见的组件(通知或前台服务等)时,后台服务也将完全暂停。所以奥利奥会更糟。
好:
您可能并不真的想一直保持套接字打开状态。而是选择同步突发。我个人每30到60分钟左右运行一次作业,以尝试进行同步。
您可以利用JobScheduler api,它将自动处理打ze模式和东西,并且可以使它们在有互联网连接时定期运行。在作业运行时,您可以连接到服务器,执行操作并关闭套接字。这就是Google想要的,并且正在将所有开发人员推向目标。
另一个选择是让前台服务显示活动的通知,并通过您的套接字不断连接该通知。这将对用户可见,不仅使他们烦恼您一直在使用他们的数据,而且还可能对电池不利。另一个替代方法是使用作业调度程序定期调度和运行前台服务,以保持透明,同时还不时地同步数据。后一种方法是WhatsApp所做的,它们有一个正在运行的作业,该作业会不时地将所有传入消息与前台服务同步。
简而言之:
您将无法始终保持它的生命。您可以尝试使用我目前描述和了解的一种方法来突发操作(也许还有其他我不知道的替代方法,我已经测试了这些方法并且它们起作用了),您将不得不妥协,抱歉。
| 归档时间: |
|
| 查看次数: |
3728 次 |
| 最近记录: |