2011-04-28 2 views
1

전에 서비스를 중지하는 방법에 관한 많은 질문이 있지만 특정 문제를 해결하지 못했음을 알고 있습니다.stopService()를 호출하여 서비스가 중지되었는지 확인하십시오.

내 애플리케이션에는 하나의 중앙 서비스와 통신하는 여러 가지 활동이 있습니다. 각 액티비티마다 onResume() 메소드에서 bindService()를 호출하고 onPause() 메소드에서 unbindService()를 호출합니다. 이 문제는 두 가지 활동 사이를 전환 할 때마다 서비스가 삭제 된 다음 처음부터 다시 작성된다는 점에서 문제가 있습니다.

이 문제를 해결하기 위해 onCreate()에서 startService()를 호출하여 서비스가 활성 상태로 유지되는지 확인했습니다.

제 질문은 stopService() - 응용 프로그램을 종료 할 때 호출되는 방법은 무엇입니까? 또는 startService()에 의존하지 않고 두 가지 작업간에 전환 할 때 서비스를 계속 실행하는 또 다른 방법이 있습니까?

답변

2

종합적인 답변은 android service startService() and bindService()을 참조하십시오.

+0

빠른 응답을 보내 주셔서 감사합니다. 어떤 시점에서 stopService()를 호출해야한다는 것을 이해합니다. 내 문제는 어디에 넣어야할지 모르겠다. 사용자가 앱을 종료 할 때까지 (즉 모든 활동이 일시 중지되거나 삭제 될 때까지) 서비스가 계속 실행되도록하고 싶습니다. onDestroy()는 호출에 의존 할 수 없기 때문에 올바른 장소가 아닌 것 같습니다. – summon

+0

내가 생각할 수있는 한 가지 방법은 바인딩 된 활동이 여전히 존재하는지 확인하는 백그라운드 스레드를 서비스에두고, 그렇지 않으면 stopSelf()를 호출하는 것입니다. – rajath

+0

다시 한번 감사드립니다! 배경 스레드를 사용하여 내 문제를 해결. – summon

1

이것은 서비스를 중지하고 시작하는 방법입니다.
자세한 내용은 link을 확인하십시오.

public void onClick(View src) { 
    switch (src.getId()) { 
     case R.id.buttonStart: 
      Log.d(TAG, "onClick: starting srvice"); 
      startService(new Intent(this, MyService.class)); 
      break; 
     case R.id.buttonStop: 
      Log.d(TAG, "onClick: stopping srvice"); 
      stopService(new Intent(this, MyService.class)); 
      break; 
    } 
} 

및 서비스 클래스의

:

public class MyService extends Service { 
    private static final String TAG = "MyService"; 


    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onCreate"); 


    } 

    @Override 
    public void onDestroy() { 
     Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onDestroy"); 

    } 

    @Override 
    public void onStart(Intent intent, int startid) { 
     Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onStart"); 

    } 
} 

HAPPY 코딩을!

관련 문제