서비스를 호출하기 전에 해당 서비스가 이미 실행 중인지 찾기 위해 함수를 사용하고 있으므로 이미 실행중인 경우 서비스가 시작되지 않습니다. -서비스가 실행 중인지 여부를 확인하는 데 오류가 발생합니다
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
입니까? 어떤 도움을 주셔서 감사합니다.
관리자가 null이 아닌 것은 확실합니까? 거기에 수 표를 추가 할 수 있습니까? 당신이 제공 한 스택 추적에는 라인 번호가 없으며, 무슨 일이 일어나고 있는지 예측하기가 어렵습니다. – kosa
예, manager가 null이 아닙니다. 서비스가 실제로 실행 중일 때 함수 (iSR())가 올바르게 true를 반환하면 "Service_name.mThis.stopSelf();"행을 실행할 때 문제가 발생합니다. ''mThis''는 공용 정적 변수입니다 (public static Service_name.mThis = null로 선언되고 'onStartCommand()'에 mThis = this 및 'onDestroy'mThis = null). –