AndroidDev 板


LINE

※ 引述《yauhh (哟)》之铭言: : 我想做比较稳定的即时service, : 基本上不需要service长期运作,只要想要的时候可以叫得醒service就好, : 然後,一旦派送工作到service,最好service可以运作到工作完成. : 就算app关掉了,已经送上service的工作也要继续完成. : 听说IntentService可以管理一些thread,我颇心动,就将旧程式模型修改 : 为IntentService. : 旧程式是启动app时会启动service,然後可以即时bindService把工作派上去. : bindService时有开partial wake lock和wifi lock,然後service会启动AsyncTask, : AsynTask中也开wake lock和wifi lock (使用service context). : 如果有一百个工作,就会发送一百个AsyncTask;这些AsyncTask共抢一个lock. : 运作起来,如果app还开着时都会运作,而如果app关掉,就看情况,通常是大批工作 : 的後面一大段AsyncTask-s都不见. 我猜是因为当时service已经结束. : 修改为IntentService的方式,我查了手册及例子,觉得好像是把 : ... extends Service { : 改成 : ... extends IntentService { : 这样是基本. 接着看到的例子说,要启动就是丢资料到intent然後用startService : 方式派上去,但我看这样应该是只有IntentService启动时会onHandleIntent吧? : 另外,应该也是照样使用bindService. 整体来说,我旧程式改成新程式就是 : 把Service改成IntentService而已. : 後来测试新程式的运作情况,觉得好像与旧程式很接近. 也对,其实就是没改过. : 那请问IntentService怎麽用可以做到本文第一段所说的需求呢? 东西太多了,直接打 Activity跟Service的沟通方式,至少有两种 简单一点的,就是在启动、呼叫service时,丢个Intent过去 我记得在官方文件那边有个生命周期... 有本看过的书上也看过 就是server已经在运作时,android会去呼叫另一个方法 那个方法就能接受intent,去取得资料 另外 Lock lock = new Rrealatylock(); //忘了那个lock怎麽拼 public void ononHandleIntent() { lock.lock(); //这样就可以确保这个service不会被android砍掉 //我通常会在这里面写个回圈,每个几秒或是几分钟去检查运作正不正常 //直到这个service该结束掉时,才lock.unlock();把这个地方给结束掉 } 另外一种方法是复写service的 onBind()方法 在activty中用bindService() 不知道有没有拼对.... 按alt+/他会自己跳出来,我懒得记 在这个方法中需要有个callback物件当参数 (S...C....什麽的) 在service跟activity连上时,会呼叫那个callback中的onBindService 在那里会收到Service中的IBinder 这样一来,就能在activity中去呼叫service的方法 service跟activity连结的简单范例大概会像这样: interface MyServiceAct { int getX(); } //===================================== public MyService extant Service { int i = 1000; public class MyBinder extant Binder implement MyServiceAct { public int getX(); { return i; } } public onBind(....) { return new MyBinder(); } ....... } //=================================== Activity 就这样用 class Sc implement S....C.... { public onBindService(IBinder binder, .....) { MyServiceAct msa = (MyServiceAct)binder; msa.getX(); //从activity中取得service中的i } public onUnBindService(.....) { ....... } } startService(.....); bindService(.... new Sc()....); //==================================== 完蛋了,我没有IDE就不会写程式了... orz.... 抱歉,因为现在没有eclipse,所以很多东西都记得不清楚 但差不多就是这样 -- --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.233.154.127 ※ 编辑: LaPass 来自: 125.233.154.127 (04/26 23:56) ※ 编辑: LaPass 来自: 125.233.154.127 (04/27 00:03)
1F:推 yauhh:谢谢,这像是起码有个手画地图,看起来很有方向感 04/27 06:53
2F:推 gpc:现在写native或jni也是没IDE可用...XD 04/27 10:32
4F:→ yauhh:ce.html#START_STICKY http://0rz.tw/m2HE0 这个旗标可用吗? 04/30 00:41
5F:→ LaPass:没应向 那部分我是边试边写出来的 04/30 13:56







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP