2013-03-24 5 views
1

나는 외부 활동을 시작해야하는 서비스를 가지고 있습니다. Activity를 실행 한 후에도 서비스가 계속 실행되기를 바랍니다. 문제는 onDestroy()가 호출되고 서비스가 종료된다는 것입니다.내 안드로이드 서비스가 활동을 시작할 때 왜 죽게됩니까?

내가 서비스 내부에서 외부 활동을 시작하는 방법 :

 Intent intent = new Intent(Intent.ACTION_DIAL);   
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 

어떤 생각 여기 내 코드?

+1

로그를 추가하십시오 cat put – minhaz

+0

logcat에 이상한 메시지가 없습니다. 서비스 내부에서 활동을 시작하면 해당 서비스가 종료되는 것이 정상입니까? 회신에 감사드립니다. – superbre

답변

2

서비스 내부에서 활동을 시작하면 해당 서비스가 종료되는 것이 정상입니까?

서비스가 "죽지"않습니다. 때까지 서비스가 실행됩니다

: 당신은 서비스를 참조 stopService() 전화

  • , 또는
  • 서비스가 stopSelf()를 호출하거나
  • 당신이 결합 패턴을 사용하는 경우 (bindService()를 통해) 모든 바인딩 (unbindService()을 통해) 언 바운드 또는
  • 메모리 부족 또는 사용자 요청으로 인해 Android가 프로세스를 종료합니다.

따라서 어떤 조건이 참인지를 결정해야합니다. 아무 것도 활동 시작과 관련이 없습니다.

서비스에서 활동을 시작하는 것은 일반적으로 바람직하지 않습니다. 특히 사용자 입력을 기반으로하는 것이 아니라 임의의 시간에 발생할 수있는 경우에 특히 좋습니다. 사용자는 아무데도 나타나지 않는 활동을 싫어합니다.

+0

. 사실 내 서비스는 3 가지 다른 작업을 수행합니다. 그 중 하나는 외부 활동을 시작하는 것입니다. 이 마지막 작업 만이 서비스에서 onDestroy()를 호출합니다. 패키지 이름으로 활동을 시작하는 코드는 다음과 같습니다. Intent it = pm.getLaunchIntentForPackage (packageName); if (null! = it) {\t \t \t \t \t it.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity (it); } – superbre

+0

@superbre : 활동 시작 * 서비스가 파괴되지 않습니다 *. 내 대답에있는 네 개의 총알이 모두합니다. 당신은 어떤 특정한 것들이 발생 하는지를 결정할 필요가 있습니다. – CommonsWare

관련 문제