2011-07-05 6 views
11

알림 트레이에 대한 알림을 만들고 있습니다. 다음과 같이 클릭 의도를 지정합니다.추가 의도를 제거 할 수 없습니다!

Intent intent = new Intent(context, MyActivity.class); 
intent.putExtra("foo", true); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.setData(Uri.parse("" + System.currentTimeMillis())); 

MyActivity 클래스는 "foo"매개 변수가있는 상태로 시작됩니다. 그러나, 나는 나중에 추가 그 없애 수 없습니다 - 텐트를 고집하는 것 같다

// MyActivity 
public void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 

    // please go away.. 
    intent.removeExtra("foo"); 
    getIntent().removeExtra("foo"); 
} 

반복하기를 의도의 키 이상은 "foo는"이 더 이상 존재하지 표시되지 않습니다. 그러나 활동을 배경으로 한 다음 다시 포어 그라운드로 가져 오면 "foo"매개 변수가 다시 나타납니다.

누구나 실제로 제거하는 방법을 알고 있습니까? 또한 setIntent(), 같은 동작을 호출 해봤습니다. 런처가 원래의 의도를 유지하고 계속 사용하는 것과 같습니다.

감사합니다.

+0

이것은 자바와 포인터가있는 바보 같은 경우 중 하나입니다. foo없이 복사 한 후 원래 의도를 마무리해야 할 수도 있습니다. – hwrdprkns

+0

아, 원래의 의도를 어떻게 마무리할까요? onNewIntent()에서 finish()를 호출하고 다시 활동을 다시 시작하는 것과 같은 작업을 수행 할 수 있습니까? 나는 사용자가 비열한 점프를 보지 않을 것이라고 추측한다. 나는 그 "foo"를 없앨 것이다. 나는 그것이 일할 수 있다고 생각한다! – user291701

+0

'Intent.finalize()'? – hwrdprkns

답변

0

정확히 Android가 수행하는 작업입니다. onNewIntent 메소드 내에서 intent 매개 변수를 수정해도 알림 시스템의 저장된 인 텐트에는 영향을 미치지 않습니다. 새로운 인 텐트를 생성하고이를 로컬로 액티비티에 저장하고 다른 데이터처럼 저장하고 복원해야합니다.

EDIT : 의도 자체를 다시 사용할 필요가없는 경우 관련 데이터를 별도로 저장하는 것이 좋습니다.

+0

허허 따랐다. 새로운 의도를 만들고 setIntent()를 호출한다는 의미인가? (같은 행동을하는 것처럼 보입니다). 그렇지 않으면 우리는 내가 생각하기에 스스로이 상태를 관리해야합니까? 감사합니다. – user291701

+0

오, 알림 바에 의도를 다시 넣으려고하고 있습니까? 나는 새로운 의도와 새로운 통보를 만드는 것이 올바른 일이라고 생각합니다. – robamaton

+7

예. 정확히 그 의도를 제거하고 싶습니다. 다음에 사용자가 다음에 실행기에서 실행될 때, 나는 그 여분을 사라지 길 원합니다. 새 알림을 만들려고하고 setIntent()를 호출했지만 동일한 동작 - "foo"키가 나를 고통스럽게합니다. – user291701

관련 문제