2011-11-04 4 views
7

활동 A가 작업 T1과 관련이 있고 활동 B가 작업 T2와 관련이 있다면 활동 B를 활동 A에서 끝내려면 어떻게합니까?다른 활동에서 활동을 완료하는 방법

내 응용 프로그램을 바로 가기 나 알림을 통해 시작할 수 있기 때문에이 기능이 필요합니다.

+0

두 활동이 동일한 응용 프로그램의 일부입니까? – FoamyGuy

+0

예. 액티비티 a가 정상적으로 시작되었고 앱이 백그라운드 트로프 알림에있을 때 액티비티 B가 시작되었습니다. –

+0

[service] (http://developer.android.com/guide/topics/fundamentals/services.html)를 사용한다고 말하고 싶지만, 많이 보지는 않았지만 그것은 당신에게 유용 할 수 있습니다. – user999717

답변

0

나는 가장 좋은 방법 일 것입니다 무엇인지 잘 모르겠지만, 한 가지 방법은 다른 동안

+0

위의 내 코멘트를 참조하십시오. –

+0

onStop 또는 비슷한 것으로부터 참조를 제거 할 수 있습니다 ... – Warpzit

3

... 싱글로 활동를 전달하고 B에서 가져올 그것에) (마무리 할 수 ​​있었다 접근법이 효과가있을 수 있습니다. 가장 직접적인 접근 방식은 다른 활동에 의도를 보내어 자신을 끝내라고 말합니다. 그 활동은 그 의도를 받아서 finish()를 호출합니다.

+0

만약 내가 이것을하고 있다면, 나는 이와 같은 것으로 갈 것입니다. – FoamyGuy

+0

참조가있는 동안 OS가 해당 활동을 죽이지 않기 때문에 응용 프로그램에서 활동 참조를 유지하는 것은 좋지 않습니다. –

+0

이것은 다릅니다. 내 제안보다하지만 의도 된 활동이 실행중인 활동과 동일하고 새로운 활동이 아닌 경우에만 작동합니다. 나는 당신이 의도로 그것을 부를 때 어떻게 작동 하는지를 모른다. 그래서 테스트를하지 않고 대답 할 수 없다. 이것이 의미가 되길 바랄 ... – Warpzit

1

또 다른 방법으로 알림 핸들러의 clear top 플래그로 Activity B를 호출 할 수 있습니다. 예 :

Intent intent = new Intent(context, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
context.startActivity(intent); 

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

설정 한 경우, 그리고 시작되는 활동이 이미 현재 작업에서 실행 한 후 대신 그 활동의 새로운 인스턴스를 시작하고, 그 위에 다른 모든 활동이 될 것입니다 이 인 텐트는 새로운 인 텐트로 이전 활동에 전달됩니다.

+0

다른 작업의 활동에는 영향을 미치지 않고 해당 작업의 모든 활동 만 지 웁니다. –

2

나는 yall이 여기서 언급 한 것과 같은 정보를 가지고 놀고 싶다. 나는 이것을 생각해 냈다.

Intent intent = new Intent(MainActivity.this,HighScoresActivity.class); 
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(intent); 

필요에 맞게 활동을 변경하지만 FLAG_ACTIVITY_CLEAR_TOP은 스택에서 다른 활동을 제거합니다.

관련 문제