2012-04-28 75 views
6

所以我有一个后台服务运行。现在,如果用户退出该活动,该服务仍将继续运行,对吗? 现在当用户重新启动应用程序时,我想访问后台服务并调用一些方法。我如何访问后台服务的实例?获取后台服务实例

谢谢!

回答

6

这对我来说非常有用!但是如果您有其他选择,请不要使用它,因为公共静态成员不是很好,除非它们是最终的。 您可以在服务中创建一个具有公共范围的静态变量。

public static BackgroundService bs; 
@Override 
public void onCreate(){ 
    bs=this;} 

然后用'this'初始化该变量,使其成为当前正在运行的服务的引用。随时将其用作您活动的参考。

+0

听起来不错!今天会试一试,看看它是否有效!谢谢! – Ishwar 2012-04-29 02:41:22

+0

好吧,所以我做了你说的,但我得到了NullPointerException。我的代码:http://pastebin.com/UT9Rcyi4 – Ishwar 2012-04-29 05:30:04

+1

这是因为根据(stackoverflow.com/questions/5085190/...)对startService的调用是异步的。所以你的服务还没有开始!只要在一些开始你的服务其他活动,并从那里开始使用startActivity()开始您的活动,它正在为我工​​作。 – rahulserver 2012-04-29 08:53:21

0

如果您想与后台服务进行通信。不能使用粘结剂机制,这个你可以访问此网站:android develop

有一个实例讲述如何使用后台服务

非常感谢

1

如果服务退出活动后继续运行取决于你如何开始活动。 (在文档startService()/ bindService()中阅读此内容) 如果您的服务仍在运行,那么调用startService()/ bindService()会将您连接到“旧”服务。

+1

所以你的意思是如果服务在后台运行,启动或绑定服务不会产生新的服务实例。相反,会拿旧的? – Ishwar 2012-04-28 13:55:15