我有一个应用程序在启动时使用广播接收器启动,同时我也有一个活动和一个进程,因为服务必须始终在后台运行我正在启动它自己的进程上的服务使用android:process清单标签。在单独的线程上运行的android服务
ui仅适用于表示需求,我希望用户能够运行该服务,即使该活动未处于活动状态。
我用这额外的参数启动服务:
intent.putExtra(Intent.EXTRA_DONT_KILL_APP, true);
的问题是,当我按下后退按钮或home键的活动对破坏方法被调用和服务尽管看起来它的运行(它出现在任务管理器上)其行为不如预期,它应该连接到网络并发送一些数据,但每X时间使用一个计时器任务,但任务不会触发,因此数据永远不会发送。
感谢您的建议,但是1我使用的是大约3 MB的ram,它与在手机上运行的其他任何服务都没有太大的区别,2它用于什么(额外的参数)? 3为什么不使用单独的过程?我应该什么时候? 4我知道警报管理员,但我希望我的更新在警报管理员无法保证的特定时段进行。 – maxsap 2010-11-07 01:03:56
@maxasp:1. Android不会在意。用户不会在意。 2. http://developer.android.com/reference/android/content/Intent.html#EXTRA_DONT_KILL_APP 3.因为你浪费了两倍的RAM,没有任何好处。 “AlarmManager”工作得很好,谢谢。如果您有相反的证据,请发布。 – CommonsWare 2010-11-07 01:07:57
实际的应用程序是活动仅在程序第一次运行的服务,所以为什么要使用双RAM?请解释一下,android会收回活动进程使用的内存(如果我错了,请纠正我)。我已经阅读过那篇文章,那就是为什么当我说“覆盖重新启动应用程序的默认操作”的时候使用它并不会导致这些服务?不知道setRepeating方法抱歉,但我可以动态更改间隔吗?在当前形式中,服务获得关于新时间间隔的通知并设置计时器任务。 – maxsap 2010-11-07 01:40:47