2011-02-01 1 views
13

비트에 사용되는 엑스트라의 마지막 세트를 시작합니다 내가 클릭 홈 화면 위젯을 가지고안드로이드 : '최근 애플리케이션'에서 시작 응용 프로그램은 여기에 나를 위해 혼란 문제의 의도

, 의도에 넣어 몇 엑스트라와 함께 내 주요 응용 프로그램 활동을 시작 :이 모든 작품을 잘

Intent start = new Intent(context, Main.class); 
start.putExtra("action", "showXYZ"); 
start.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(start); 

을, 내 활동을 시작하고 예상대로 나의 활동은 엑스트라를받습니다. 이 엑스트라를 처리하고 다른 활동을 시작합니다.

사용자가 홈 화면 위젯을 클릭하고 이러한 방식으로 주 활동을 시작하면 '최근 응용 프로그램'방법 ('집'키 누르기)을 통해 앱으로 이동하면 보조 활동과 함께 주 활동이 시작됩니다. 내가 원하지 않는 (그리고 두 번째 액티비티가 열리는 주된 액티비티가 보여지기보다는 오히려 이끌어내는 것에 이르게하는) 프로세싱이 일어납니다.

해결 방법이 있습니까? '최근 애플리케이션'방법으로 앱을 시작할 때, 마지막 엑스트라 세트없이 주요 활동을 시작하기 만하면됩니다.

많은 도움에 감사드립니다! 이

참고 r3mo :

해결 여기 찾았 : 나는 안드로이드 1.5

편집에있어 나는 위젯에 의해 출발되는 의도에 타임 스탬프거야 Android keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras?

, Main.java에서 타임 스탬프가 최근인지 확인하십시오. 그렇다면 처리를 진행하겠습니다. 그렇지 않은 경우 Main.java 활동 만 표시합니다.

공식적인 해결책이 있는지 알려주십시오.

답변

0

엑스트라를 사용한 후 사용을 취소해야합니다.

Bundle extras = getIntent().getExtras(); 
if (extras == null) { 
    return; 
} 
String value1 = extras.getString("Value1"); 
String value2 = extras.getString("Value2"); 
extras.clear(); 
+2

감사 : 응용 프로그램이 다음과 같이 플래그 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 세트 인 텐트를 사용하여 열 경우 – r3mo

9

나는 "최근 응용 프로그램"시작과 "정상적인"시작을 구분할 수 있다고 생각합니다.

Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

되는라는 플래그는 문서에 따르면,이 :이 플래그가 설정되어있는 경우

This flag is not normally set by application code, but set for you by the system if this activity is being launched from history (longpress home key).

그래서, 당신은 엑스트라를 무시하도록 선택할 수 있습니다. 제안에 대한

int flags = getActivity().getIntent().getFlags();  
if ((flags & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) { 
    // The activity was launched from history 
} 
38

마티가 말한대로

, 당신은 확인할 수 있습니다. 난 그냥 Main.java (위젯에 의해 시작됩니다)에서 이것을 시도하고 이것은 어떤 차이를 만드는 것 같지 않습니다. 이것은 단지 지역 변수 '엑스트라'를 지우는 것이 아닌가? 나는 문제가 안드로이드가 마지막 엑스트라 세트가 전달 된 '최근 애플리케이션'활동을 시작하는 방법에 있다고 생각한다.
+3

불행하게도이 플래그는 있어야 할 때 안정적으로 설정되지 않습니다. –

관련 문제