2011-02-10 5 views
5

일부 백그라운드 스태프를 담당하는 서비스가 있습니다. 그런 다음 서비스가 처리 한 일부 결과를 보여주는 활동을 시작해야합니다. 그러나 활동이 서비스에서 여러 번 시작될 가능성이 있습니다. 이제이 활동이 이미 활성화되어 있지 않은 경우에만이 활동을 시작하고 싶습니다.활동이 서비스에서 시작되었는지 확인하십시오.

어떻게 할 수 있나요? 그리고 샘플 코드는 괜찮 으면 좋을 것입니다.

감사합니다.

답변

2

androidManifest.xml 파일에서 활동의 launchModesingleTask으로 변경해야합니다.

이 속성의 기본값은 임의의 수의 인스턴스를 실행할 수있는 standard입니다.

"singleTask"및 "singleInstance"활동은 작업 만 시작할 수 있습니다. 이들은 항상 활동 스택의 루트에 있습니다. 또한 장치는 한 번에 하나의 작업 인스턴스 만 보유 할 수 있습니다. 단 하나의 작업 만 가능합니다. [single] "singleTask"액티비티는 다른 액티비티가 태스크에 포함되도록 허용합니다. [...]

"singleTask"및 "singleInstance"모드는 한 가지 측면에서만 서로 다릅니다. 그것은 항상 그 업무의 근원이지만 다른 활동들 (필연적으로 "표준"및 "단일 탑"활동들)은 그 일에 착수 될 수 있습니다. 반면에 "singleInstance"액티비티는 다른 액티비티를 그 작업의 일부로 허용하지 않습니다. 그것은 작업의 유일한 활동입니다. 다른 활동을 시작하면 FLAG_ACTIVITY_NEW_TASK가 의도 한 것처럼 해당 활동이 다른 태스크에 지정됩니다. 더 자세한 설명은 Android Developers' Guide 밖으로

확인 (인용뿐만 아니라 거기에서이다)

<activity android:name=".activity.YourActivity" 
    android:launchMode="singleTask" 
    android:alwaysRetainTaskState="true" 
    android:clearTaskOnLaunch="false" 
    android:finishOnTaskLaunch="false"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
관련 문제