2013-06-26 131 views
0

我只是在阅读使用服务来保持应用程序在后台运行。Android服务&&应用程序

有几件事对我来说不太清楚。

1:一旦一个服务已经开始,当主应用程序被Android破坏时它会保持活着吗? (我知道它与OnPause()和OnStop())

2:如果在内存中为服务声明了任何东西,有没有办法从我的应用程序访问此? (EG服务只是记录GPS,看看你是否移动或静止,从主应用程序我想看看有多少记录,而主应用程序是无效的)

我知道这些都是相当一般的问题,我正在阅读Android编程的这一部分,并且希望在不久的将来修改一个程序。所以我没有代码去的问题,但

感谢,

BBBwex

回答

1

一旦服务已经启动,当主应用进行了由Android摧毁它活路?

应用程序不会被破坏。活动被破坏。应用程序已终止其进程。

服务将在此过程中运行,直到:

  • 没有更多的绑定连接(即通过bindService())和

  • 如果该服务被开始startService(),它停止了与stopService()stopSelf()

当然,一旦该过程结束时,服务(和其他一切)消失了。

如果在服务的内存中声明了任何内容,有没有办法从我的应用程序访问它?

您的服务是您的应用程序的一部分。我将在这里假设,“app”是指“活动”。

你的服务有任何数量的活动可以监测和使用,包括在方式的信息发布方式:

  • 服务中的数据写入到ContentProvider,它通过LoaderContentObserver更新活动

  • 服务将消息发送到活动,通过LocalBroadcastManager,一个第三方消息总线像Otto,一个Messenger绑在Handler

  • 服务将数据存储在一个静态数据成员的高速缓存,该活动读取(或者投票)

  • 活动只是读取数据出任何持久性数据存储的服务用途(例如,SharedPreferences )根据需要

  • 等等

+0

您也可以考虑使用EventBus(https://github.com/greenrobot/EventBus)作为替代奥托。它的基准看起来非常好。 – basar

+0

是啊,对不起,新事物...意思是说活动,而不是应用程序。谢谢,看起来我需要做更多的学习,尝试一些东西,但总的来说,我的确在这里得到了我的答案......在周末保持清醒,学到更多。谢谢!! – bbbwex