2013-07-01 4 views
0

전환 버튼과 같은 활동에서 서비스를 시작/중지하고 싶지만 중지되지 않습니다.Android 서비스가 중지되지 않습니다

MainActivity.class 서비스가 온라인인지 아닌지

btnGoToTrack.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(MainActivity.this, SendIntentService.class); 
     boolean isServiceRunning = isServiceRunning(SendIntentService.class); 

     if (isServiceRunning == false) startService(intent); 
     else stopService(intent); 
    } 
}); 

확인 :

private boolean isServiceRunning(Class<?> pClass) { 
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (pClass.getName().equals(service.service.getClassName())) { 
      return true; 
     } 
    } 

    return false; 

문제는 항상 나를 TRUE 반환 isServiceRunning입니다. 나는 이유를 모른다.

SendIntentService.class는 :

@SuppressLint("NewApi") 
public class SendIntentService extends Service { 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     Log.e("D: ", "SERVICE STARTED !"); 
     return START_STICKY; 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Log.e("D: ", "SERVICE DISABLED !"); 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 

답변

1

"문제는 isServiceRunning 항상 나를 TRUE 반환이다 나는 이유를 모르겠어요.." 이 아니어야합니다 : "문제는 isServiceRunning이 항상 FALSE를 반환합니다. 왜 그런지 모르겠습니다."

는 항상 서비스를 시작하지 않을 TRUE를 반환한다면 ... pClass.getName은() 정말 service.service.getClassName 동일한 경우

당신이 (확인 했습니까)?

+0

예, 동일합니다. 나는 내 자신의 질문에 대답했다. –

+0

아 좋아, 내가 내 장치에서 그것을 카운터 검사하고 그것은 매력처럼 일했습니다. 처음에는 매니페스트에 서비스를 추가하는 것을 잊어 버렸지 만 ... – JackZ

0

문제는 내 AVD 때문이었습니다. 여러 버전이 설치되어 있고 (앱을 개발하는 동안) 여러 서비스가 시작된 것 같습니다.

내 AVD (Settings -> Apps -> Uninstall app)에서 모든 버전을 제거하고 응용 프로그램을 다시 시작했습니다. 이제 작동 중입니다!

관련 문제