我在使用startService的应用程序中启动服务。如何获取Android本地服务实例
我不想使用bindService,因为我想自己处理使用寿命。
如何在不使用bindService的情况下获得启动服务的实例?我希望能够获得我在服务类中创建的处理程序,以便从活动中发布消息。
谢谢。
/亨利克
我在使用startService的应用程序中启动服务。如何获取Android本地服务实例
我不想使用bindService,因为我想自己处理使用寿命。
如何在不使用bindService的情况下获得启动服务的实例?我希望能够获得我在服务类中创建的处理程序,以便从活动中发布消息。
谢谢。
/亨利克
我不想使用bindService我 要处理的工作寿命时间 自己。
这并不意味着您必须避免bindService()
。如果需要,请同时使用startService()
和bindService()
。
我怎样才能得到,如果我不使用 bindService一个实例的 服务开始了吗?
使用bindService()
与startService()
,或使用单身。
这里的另一种方法:
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class MyService extends Service {
private Binder binder;
@Override
public void onCreate() {
super.onCreate();
binder = new Binder();
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
public class Binder extends android.os.Binder {
public MyService getService() {
return MyService.this;
}
}
}
onServiceConnected(...)可以施展它的参数并调用它getService()
。这避免了对服务进行静态引用的潜在内存泄漏。当然,你仍然必须确保你的活动没有挂在参考文献上。
通过“使用单例”,你的意思是我应该在服务类中声明我的方法是静态的吗? – Henrik 2010-06-11 18:47:47
作为bindService和startService的魅力。谢谢! – Henrik 2010-06-11 19:04:51
@Henrik:FWIW,单身人士,我的意思是你有一个静态引用到你的服务,放在服务的'onCreate()',在服务的'onDestroy()'中去掉。这会造成内存泄漏的风险,因此建议尽可能使用绑定。 – CommonsWare 2010-06-11 19:16:21