2011-07-27 3 views
0

Activity에서 현재 실행중인 Broadcast Receiver를 업데이트 할 수 있습니까? 예를 들면 다음과 같습니다.현재 실행중인 BroadcastReceiver를 업데이트하고 (새 값 전달) Activity

사용자가 문자열을 입력하면 제출을 누르십시오 ... 방송 수신기가 새 문자열로 업데이트되고 수신기가 가질 수있는 이전 문자열 대신 해당 문자열을 사용한다고 가정 해보십시오. 이것이 가능한가? 또는 사용자가 제출을 클릭 한 다음 새 문자열로 다시 시작하면 이전 수신자를 어떻게 든 멈출 수 있습니까?

답변

0

아마도 질문에 대한 오해가 있었지만 SharedPreference에 문자열을 저장하지 않으셨습니까?

활동이 해당 문자열을 업데이트해야 할 때마다 기본 설정으로 저장하고 브로드 캐스트 수신자의 onReceive 메소드에서 기본 설정에서 다시 가져옵니다.

+0

공유 우선 설정은 ArrayList가 될 수 있습니다 ? –

+0

불가능할 수는 있지만 세트 일 수 있습니다. getStringSet 메소드를 참조하십시오. 차이점은 단지 중복 문자열을 얻을 수 없다는 것입니다 (목록에서 중복을 허용 할 수 있음) – ccheneson

+0

은 3.0에 대해서만 작동합니다 –

0

나는 그렇게 생각하지 않습니다. Receiver Lifecycle 설명서를 보면 라이프 사이클이 onReceive로 제한된다는 것을 알 수 있습니다.

수신자의 라이프 사이클이 사용자와 상호 작용할 수있을 정도로 길다면 BroadcastReceiver를 사용하여 서비스를 시작하기 만하면됩니다. 액티비티에서 사용자에 의해 업데이트로 캐릭터에 대한 업데이트 (대한로 IntentFilter와 (다른) BroadcastRecevier를 등록하여 장기 실행 작업을

  • 을 수행하기 위해 배경 스레드를 시작
    1. :이 서비스는 두 가지 일을 할 수있는). 서비스가 인 텐트를 수신하면 문자열 값을 업데이트합니다. 서비스와 백그라운드 스레드 간의 동기화가 필요합니다 (관심있는 독자에게는 연습으로 남겨 둡니다).

    그런 다음 사용자가 문제의 값을 수정할 때마다 활동 코드가 의도를 실행하게하십시오.

    이 솔루션에 대한 좋은 점은 서비스가 실행 중이 아닌 경우 의도가 바닥에 떨어지고 서비스를 전혀 시작하지 않아도된다는 것입니다. 서비스가 실행중인 경우 업데이트가 발생합니다.