我在使用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