我想知道您可以通过编程方式做些什么来最小化您的服务在设备上的占用空间?编写服务的方式是否有任何特殊的技巧,以便它不会占用太多的系统内存?我认为低内存占用是我的主要考虑因素,因此用户不希望关闭服务并且愿意让它始终运行。
的 的 *** 修改 ***
好的,所以阅读答案我认为我一定是做错了。我使用AlarmManager定期唤醒服务,但我不会停止服务,除非用户通过主要活动指示。所以应该我在onStartCommand结束时包括我的服务执行它需要什么,我应该调用stopService?不停止服务调用onDestroy,因为如果它,我在onDestroy中取消注册我的AlarmManager。
当我在手机上运行服务时它运行的方式它运行服务但是它实际上没有做任何事情,直到AlarmManager关闭,此时它执行它的小功能就是这样。
答案 0 :(得分:2)
我认为低内存占用是我的主要考虑因素,因此用户不希望关闭服务并且愿意让它始终运行。
Theres是一个巨大的优化。机器人服务并不是一直在运行(如Windows服务或unix守护进程)。 它们更像是一个任务求解器,例如下载文件。完成任务后,他们应该调用Service.stopSelf()。 如果您的应用再次需要该服务,则应重新启动它,然后再执行相应的任务。
答案 1 :(得分:2)
这实际上取决于您的服务正在做什么所以确实没有正确或错误的答案。我努力保持注意的重要一点是不要让服务保持活动的时间超过要求的时间。如果您的服务大部分时间都处于空闲状态,请考虑定期使用警报唤醒,并在定期工作完成后停止服务。如果它不能长时间运行,这可以防止许多任务杀手破坏你的服务。
我也尝试使用不准确的闹钟,因为这些通常对电池更友善,电池寿命也是你应该注意的。
就内存占用而言,始终值得释放所有未使用的资源,并使代码尽可能精简和平均,无论是在服务,活动,接收器还是任何地方其他。虽然目前的智能手机拥有比功能手机更多的内存,但Android越来越多地运行在相对较低规格的硬件上,因此值得关注低端设备。
Reto Meier最近撰写了一些文章,涵盖his blog上的这些主题。