2010-11-19 5 views

답변

8

이 대화는 답변을 보인다 : http://groups.google.com/group/android-developers/browse_thread/thread/f47af26b696af2e2. "예 및 아니오"로 시작하는 게시물과 그 전에 적은 것을 찾으십시오.

답이 긍정적 인 경우 : 예, OS가 종료 한 활동을 다시 시작한 후 getIntent()는 원래과 동일한 추가 항목을 가진 인 텐트를 반환합니다.

그럼에도 불구하고 일부 Android 전문가가 확인할 수 있다면 기쁜 마음입니다. :)

0

Sobear,

그에 대한 대답은 "아니오, 그렇지 않은"입니다. 이것에는 여러 가지 이유가 있습니다. 먼저, 액티비티가 어떻게 작동하는지 다시 생각해 봅시다. (당신이 알고 있다는 것을 알고 있지만, 요점을 설명하고 있습니다).

  1. 활동을 시작하기 위해 인 텐트가 만들어집니다. 이 의도는 홈 화면의 앱 아이콘, 현재 실행중인 앱 구성 요소 또는 다른 앱의 다른 구성 요소 (실행 권한이있는 경우)에서 발생할 수 있습니다.

  2. 인 텐트는 Android로 전송되고 Android는 앱으로 보내거나 사용자가 직접 해결할 수없는 경우 사용자에게 쿼리하여 문제를 해결하려고합니다.

  3. 앱이 시작되면 보안 체크, 백 트랙킹 등을 허용하기 위해 앱을 시작한 인 텐트를 유지합니다. 개발자와 사용자는 이것이 실제로하고 싶은 것을 확실히 할 수 있습니다 ... 이 인 텐트는 활동의 수명주기와 활동이 그것을 전달하는 다른 모든 기간 동안 유지됩니다.

  4. 사용자가 일부 작업을 수행하고 산만 해지고 다른 활동으로 이동합니다. 메모리가 부족할 때까지 계속 앱이 계속됩니다.

  5. 메모리가 부족하여 Android가 활동을 종료합니다. 활동은 의도를 잃어 버렸습니다 (어떻게 든 저장되지 않았다면).

  6. 사용자가 활동이 중지되어 다시 시작하기로 결정했습니다. > 새로운 의도가 응용 프로그램을 다시 시작해야 이후 1

는, 기존의 의도가 더 이상 활동에 키가 있습니다 단계로 돌아가 - 안드로이드는 활동을 시작하는 새로운 의도를 만듭니다. 그것이 쓰레기로 모으는 지 여부에 관해서, 나는 이것이 언제 생기는지 확실하지 않지만 접근 할 수 없다. 엑스트라를 저장하는 것이 염려스러운 경우이를 수행하는 방법은 하나뿐입니다 (여러 가지 구현이 가능함). Intent와 Extras는 어떤 방법으로 저장되어야합니다. 이 함수는 getIntent() 함수에 영향을 미치지 않지만 기본 getOriginalIntent() 함수를 만들어야합니다. 거기에서 여러 옵션이 있습니다 ... 예를 들어 ...

FuzzicalLogic을 원래 의도와 활동을 다시 시작할 수있는 다음 getIntent()가 그것을 작동합니다

+0

하지만 활동이 죽으면 자동으로 보조 기능을 저장하고 'getIntent(). getExtras()'호출을 사용하여 다시 전달합니다. –

0

글쎄, 당신은 항상 에 "do not keep activities"플래그를 돌리는 간단한 실험을 개발자 옵션으로 할 수 있습니다.

해당 플래그가 켜져 있으면 응용 프로그램을 종료 할 때마다 (예 : 홈 버튼 클릭) OS가 활동을 중단하고 앱으로 돌아 가면 이전 활동이 재생성됩니다.

내 실험에 따르면 getIntent()는 활동을 재현 한 후에 항상 동일한 데이터를 갖게됩니다.

관련 문제