我正在开发一个使用服务的应用程序。服务本身可以运行,但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.我的约束方法是否可以接受?
非常感谢
答案 0 :(得分:0)
据我所知,您通过调用startService和stopService来控制服务的生命周期。这是对的吗?
如果你想保持服务运行,你为什么要调用stopService?
关于重新启动服务 - 一切都取决于您的服务配置和代码实现。