想请教下关于 Android Service 被杀死(><)之类相关的问题~ - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
monsoon
V2EX    Android

想请教下关于 Android Service 被杀死(><)之类相关的问题~

  •  
  •   monsoon 2015-05-14 23:14:01 +08:00 13214 次点击
    这是一个创建于 3884 天前的主题,其中的信息可能已经有所发展或是发生改变。

    平时基本不写 Services,所以对这块完全不了解(··?
    我想用 IntentService 在后台发送 POST 请求给服务器(如果放到 AsyncTask 或者 AsyncTaskLoader 里,用户 HOME 键,这个请求就会消失,下次再打开应用的时候会再发一次POST请求,这样服务器就有2两条同样的数据)。

    所我想请教的问题是:
    1、我觉得像 Andorid QQ、微信 之类的程序,如果用户使用了像 绿色守护(我没用过之类的软件,但是我听说可以设置让应用Services不常驻后台) 一样的软件,那么,当用户提交了一个信息内容(POST请求)后,马上后台。

    是不是就有可能导致
    这个信息提交 -》 服务器成功接收到 -》 服务器还未回复 -》 应用进入后台(HOME) -》 该信息提交的POST请求的Service被绿色守护之类的应用杀死 -》 用户再打开这个应用 -》 这次的提交内容请求丢失(客户端并不会提示是否该信息成功提交),或者是客户端再一次提交导致该信息提交两次
    这样的问题该如何避免、还是说在服务器端对同样的内容进行过滤?

    2、在我当前的应用设计上,如果用户提交了一个信息,我会显示一个 ProgressBar,然后通过 IntentService 发送POST请求,当接受到服务器的回复后,隐藏 ProgressBar 让用户一直等待成功或者失败的提示。

    考虑的问题:
    如果这时候后台这个POST请求服务被杀,那么用户不是永远等不到这个 ProgressBar 消失,提示成功或者失败的提示(当然我也可以给 ProgressBar 设置一个超时的阈值)。
    Services 文档里说 *If the service is bound to an activity that has user focus, then it's less likely to be killed*,所以我觉得这个后台被杀还是有可能的,退一步讲,用户在等待的时候后台了,这个 Activiy 失去了用户的焦点(对应上文应用的英文 *that has user focus*),这时候这个POST请求被杀,然后用户再回到原来的应用,上述的这个的问题的就可以呈现了。虽然这个问题可能发生的概率极低。

    请问下大家是如何看待这2个问题的?
    谢谢了。
    不会没人回吧(-_-)

    4 条回复    2015-05-15 17:39:36 +08:00
    monsoon
        1
    monsoon  
    OP
       2015-05-14 23:22:18 +08:00
    不会我的问题太复杂了吧Σ(;),只能靠颜文字来吸引大家了!
    KexyBiscuit
        2
    KexyBiscuit  
       2015-05-14 23:28:17 +08:00 via Android
    ('·ω·')作为一个用户,我表示这种情况下对方是有可能收到两条消息的。
    (''〃)我的想法是客户端向服务器查询发送状况,不过服务器压力就会变大……⊙△⊙有什么更好点思路吗?
    pubby
        3
    pubby  
       2015-05-14 23:34:29 +08:00 via Android
    重复递交问题可以用token,每次post之后token失效,并且让服务器告诉你相同的token已经成功post过了。

    把service设置startForground可以尽量不被系统杀掉,不过要有一个notification一直显示

    可能还要考虑CPU进入睡眠的问题,需要在service中保持CPU唤醒,要不然网络传输啥的都会失去响应(记得在service用完后释放CPU锁,免得耗电)
    allan1st
        4
    allan1st  
       2015-05-15 17:39:36 +08:00
    公司用 IntentService 从来没碰到 Activity 还在前台但 IntentService 被杀的情况。如果你对于重复提交有很高敏感性的话,建议用 SyncAdapter 做同步。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2315 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 10:48 PVG 18:48 LAX 02:48 JFK 05:48
    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