android 后台同步应该怎么做 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ufo22940268
V2EX    Android

android 后台同步应该怎么做

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

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

    https://www.evernote.com/shard/s55/sh/99d3499f-36c447ed-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     Solana     841 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 20:10 PVG 04:10 LAX 13:10 JFK 16:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86