【问题标题】:Issue in Syncing using SyncAdapter in Marshmallow and above version在 Marshmallow 及更高版本中使用 SyncAdapter 进行同步的问题
【发布时间】:2018-01-24 15:54:08
【问题描述】:

核心逻辑:在本地数据库中维护已发布的文章。 在设备获得网络访问权限时同步文章。

使用的类

  • 文章的模型类。
  • AccountManager 来处理帐户。
  • 在 AndoidManifest 中使用元数据 android:name="android.content.SyncAdapter" 注册的 SyncService 类 android:resource="@xml/syncadapter"
  • SyncAdapter 类扩展了 SyncService 使用的 AbstractThreadedSyncAdapter。
  • ArticleProvider 扩展了 ContentProvider 类,该类管理 ContentProvider 中的文章数据。
  • syncadapter.xml 包含有效的 ContentAuthority 。

该应用在 Lollipop 版本之前可以正常运行。 (即:)它从内容提供者那里获取文章数据,并在网络连接可用时发布到服务器。

问题出现在 Marshmallow 版本中,requestSync() 没有触发 onPerformSync()。 所以不会发生同步。在这种情况下提供建议。

【问题讨论】:

    标签: android android-service android-6.0-marshmallow


    【解决方案1】:

    Marshmallow 版本出现此问题,requestSync() 未触发 onPerformSync()。所以不会发生同步。在这种情况下提供建议。

    @Sackurise Android 6.0 M 实现了打盹和应用待机模式。对于节能管理来说,这应该是一件很酷的事情,但事实并非如此。很多开发者和你有同样的问题。他们的应用后台服务/进程无法正常工作,问题在于 Android M 中的这项新功能。

    虽然谷歌表示将你的应用添加到一个特殊的白名单可以解决问题(只有在需要它或者你的应用可能被谷歌游戏商店禁止时,请看https://developer.android.com/training/monitoring-device-state/doze-standby.html),谷歌代码中有一个帖子这涉及到整个问题,甚至谷歌员工也承认这个白名单对依赖后台工作(网络访问、获取传感器数据......)的应用没有帮助。

    我会把那篇文章的链接留在这里https://code.google.com/archive/p/android-developer-preview/issues/2225

    这仅在 Android M 中发生,因为我正在 Android Nougat 中测试我自己的应用程序,并且它可以正常工作(Nougat 也具有打盹和应用待机功能,但它们得到了很大改进)。

    我鼓励您继续尝试找到解决此问题的方法,如果您成功了,请分享!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多