Android服务很快被杀死

时间:2013-05-01 06:17:46

标签: android service

我正在开发一个使用服务的应用程序。服务本身可以运行,但Android系统会在退出我的活动后30秒内将其杀死,有时最早会持续6秒。

我已经看了很多关于此的不同帖子,并且知道我可以使用带有图标的前台服务。在这个阶段,我不想走这条路。

我使用以下代码显式启动服务。该服务由SwitchPreference控制。 该服务还返回START_STICKY,因此它会重新启动。

这是我正在使用的代码(不是像这样一起运行)。

// starting within the activity
Intent intent = new Intent(context, ListenerService.class);
startService(intent);

// stopping within the activity
Intent intent = new Intent(context, ListenerService.class);
stopService(intent);

// Service onStartCommand
return START_STICKY;

当我第一次退出应用程序时,我看到活动被销毁,然后在30秒内我看到我的toast消息显示该服务已重新启动。

据我所知,当内存不足时,Android系统有权终止我的服务,但我应该在退出应用程序后几乎立即将其杀死吗? 它只是垃圾收集我的活动参考和启动服务“干净”?

我正在清理活动的onStop()方法中的对象。

此外,当我通过活动返回我的应用程序时,绑定到服务以获取对服务对象的引用是一种好习惯吗? 绑定在活动的onStart()方法中完成,如下所示:

Intent intent = new Intent(this, ListenerService.class);
bindService(intent, serviceConnection, 0);

解除绑定在onStop()方法

中完成
unbindService(serviceConnection);

所以2个问题:
1.我是否应该期待Android系统几乎立即终止并重启我的服务? 2.我的约束方法是否可以接受?

非常感谢

1 个答案:

答案 0 :(得分:0)

据我所知,您通过调用startService和stopService来控制服务的生命周期。这是对的吗?

如果你想保持服务运行,你为什么要调用stopService?

关于重新启动服务 - 一切都取决于您的服务配置和代码实现。