V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ufo22940268
V2EX  ›  Android

android 后台同步应该怎么做

  •  1
     
  •   ufo22940268 · 2014-10-09 17:06:48 +08:00 · 11263 次点击
    这是一个创建于 3723 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在想做的事情就是在适当的时机把本地的数据同步到服务器上去。

    比较想要的是用户在退出应用之后,然后系统空闲的时候进行同步操作。但是不知道该如何触发。

    https://www.evernote.com/shard/s55/sh/99d3499f-36c4-47ed-a919-7003bc627b6e/c873bc95eb99e39c5048e6c73ab9c89b
    之前用了这个,但是发现效果不理想。
    16 条回复    2014-10-10 20:55:38 +08:00
    kmvan
        1
    kmvan  
       2014-10-09 17:13:25 +08:00
    开个service,想怎么触发就怎么触发...

    (胡说的,没学过安卓开发:)
    ufo22940268
        2
    ufo22940268  
    OP
       2014-10-09 17:15:04 +08:00
    @kmvan 触发条件怎么监听呢
    pimin
        3
    pimin  
       2014-10-09 17:43:37 +08:00 via iPhone
    轮询用户最后一次操作到现在到时间超过xx分钟同步?
    kmvan
        4
    kmvan  
       2014-10-09 17:49:17 +08:00 via Android
    空闲的时候,也就是关闭屏幕后几关钟吧。熄屏后用户没操作,所以一次熄屏同步一次就可以了。。。
    porrat
        5
    porrat  
       2014-10-09 17:54:53 +08:00
    看文档,AlarmManager/BroadcastReceiver+Service可以实现指定事件/事件启动后台任务
    phlips5437
        7
    phlips5437  
       2014-10-09 20:21:56 +08:00
    lz你收到我iMessage没。。。。想问下你的apple tv还在吗
    ufo22940268
        8
    ufo22940268  
    OP
       2014-10-09 22:49:01 +08:00 via Android
    @phlips5437
    发我邮件吧
    allan1st
        9
    allan1st  
       2014-10-09 23:21:59 +08:00
    SyncAdapter
    allan1st
        10
    allan1st  
       2014-10-09 23:36:26 +08:00
    补充一下:lz 可以考虑下是否真的需要在退出之后才进行同步?比方说一定要有 wifi?耗电太大一定要插入电源?还是这个后台的同步会极大的影响 UI 的流畅度?
    都考虑好了以后可以看下新的 L 提供的 android.app.job.JobScheduler
    https://developer.android.com/preview/api-overview.html#Power
    不急的话可以等一个月。
    tolbkni
        11
    tolbkni  
       2014-10-09 23:43:37 +08:00   ❤️ 1
    @glasssky001
    @allan1st +1
    还可以设置同步周期
    ufo22940268
        12
    ufo22940268  
    OP
       2014-10-10 09:14:31 +08:00   ❤️ 1
    @allan1st SyncAdapter是不是固定格式的。你有用过吗

    因为现在的情况是我们这边服务器同步的格式和逻辑已经定好了
    allan1st
        13
    allan1st  
       2014-10-10 14:37:45 +08:00 via iPad
    @ufo22940268 什么叫做服务器的格式和逻辑已经订好了?服务器不是为了客户端服务的吗?而且sycadapter只是一个组件,你要同步什么数据什么格式都是你自己写的,不太能理解你说的固定格式。还有,lz为什么一定要延迟同步,建议考虑考虑用户关机了或者没有信号的情况。
    ufo22940268
        14
    ufo22940268  
    OP
       2014-10-10 14:42:46 +08:00
    @allan1st 今天看了下syncadapter的 sample,发现它和服务器传输的数据格式是 xml,但是我们现在和服务器通信的格式是 json。

    所以我就猜 syncadapter 是要在特定的框架下才能够使用的。去 so 上搜索出来发现别人也是把本地数据和 google cloud 数据进行同步的时候才使用的。


    你们在使用 syncadapter 进行同步吗
    allan1st
        15
    allan1st  
       2014-10-10 15:27:45 +08:00 via Android
    @ufo22940268 你想用什么格式都可以啊,你youtube搜搜google io 2010。有个胖子做了个讲座的,好像叫 REST Client 什么的。
    tolbkni
        16
    tolbkni  
       2014-10-10 20:55:38 +08:00
    @ufo22940268 演示用 XML,不代表你实现不能用其他格式,JSON 甚至自定义格式都可以。

    我们用 SyncAdapter 做定期同步,请求服务器 API 获得 JSON 格式的数据然后保存到数据库。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:05 · PVG 05:05 · LAX 13:05 · JFK 16:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.