3
我正在使用該函數在調用服務之前查找服務是否已在運行,以便服務在其已經運行時不會啓動: -爲什麼檢查服務是否正在運行,是否給出錯誤
private boolean iSR() {
String sClassName;
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
sClassName = service.service.getClassName();
if (sClassName.contains("com.abc.def.Service_name"))
{
return true;
}
}
return false;
}
而且我需要在單獨的進程中運行服務,否則會導致應用程序變慢。因此,在清單: -
<service android:name=".Service_name" android:process=":my_process" > </service>
但是,如果該服務正在運行,並調用該函數時,它會給錯誤是這樣的: -
..java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xyz.abc/com.xyz.abc.main}: java.lang.NullPointerException
爲什麼會這樣呢?任何幫助,高度讚賞。
你確定manager不是null嗎?你可以在那裏加一張支票嗎?在您提供的堆棧跟蹤中沒有行號,很難預測發生了什麼。 – kosa 2012-02-01 17:15:40
是的,經理不是空的。在服務真正運行時,當函數(iSR())正確返回true時,執行「Service_name.mThis.stopSelf();」行會發生問題。 ''mThis''是一個公共靜態變量(聲明爲public static Service_name.mThis = null;並且在'onStartCommand()'mThis = this;'onDestroy'mThis = null。 – 2012-02-02 02:10:02