作者yauhh (哟)
看板AndroidDev
标题[问题] service维持运作
时间Thu Apr 19 00:08:23 2012
OS版本: 2.1
各位好, 最近我练习service保持背景执行,由於对service运作情况没有信心,
所以做一份简单的外部架构来测试,包含一个Activity负责启动Service,以及
一个Service.
我把WakeLock的设定放在Service的onStartCommand,设定为PARTIAL_WAKE_LOCK.
刚开始观察,service有执行一阵子,按电源钮关掉萤幕也还会运作一阵子.
但是离开去忙一阵子之後回来看,发现service已经被系统请出去了.
请问程式这样的运作情况对吗? 可以相信service能够如实掌握该运作的工作吗?
程式片段如下:
........................... extends Service {
private static PowerManager.WakeLock wakeLock = null;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
HelloWorldService.acquireLock(HelloWorldService.this);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
public static synchronized void acquireLock(Context context) {
if (wakeLock == null) {
PowerManager powerMan =
(PowerManager)context.getSystemService(
Context.POWER_SERVICE);
wakeLock = powerMan.newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK,
"idv.world.hello");
wakeLock.setReferenceCounted(true);
}
wakeLock.acquire();
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.112.225.20
※ 编辑: yauhh 来自: 59.112.225.20 (04/19 00:08)
1F:推 LaPass:IntentService会比较好用 04/19 09:16
2F:→ yauhh:这东西可以庆菜就保持service存活吗? 04/19 11:45
3F:→ nopeace:onStartCommand时回传START_STICKY,service死了会被系统 04/19 12:11
4F:→ nopeace:叫起来 04/19 12:12
5F:推 LaPass:在跑 onHandleIntent 的时候,不会被砍掉。跑完後就会。 04/19 12:37
6F:→ LaPass:在onHandleIntent里把执行绪block住,要关时再解开 04/19 12:38
7F:→ LaPass:IntentService是被设计成.... 长时间在背景工作用的,一般 04/19 12:40
8F:→ LaPass:Service只要没有activity跟他连结,就可能被砍。 04/19 12:40
9F:推 doom3:能不用维持就不要维持吧 现在一堆使用者都会装一些APP来砍 04/19 18:19
10F:→ doom3:你的service 然後程式坏掉不能跑还会怪你 XD 04/19 18:20
11F:→ yauhh:拜托,我要上传档案啊,不维持背景运作就没辄了 04/19 19:15
12F:推 doom3:阿 我说的是指24小时待命那种 04/19 19:21