2012-10-23 2 views
0

데이터를 활동에서 서비스로 전달하고 싶습니다. 현재 ArrayList<HashMap<String, String>>을 사용하려고합니다. 이 서비스를 전달할 때 어떤 옵션이 있습니까? 의도에 여분의 데이터로 넣는 것에 대해 생각하고 있었지만이를 수행하는 방법을 모르겠습니다. 아니면 이것을 세계의 일종으로 설정할 수 있습니까?Android ArrayList <HashMap <String, String >>

현재 활동의 정적으로 설정되어 있으며 서비스는 ArrayList의 다음 항목과 함께 제공 될 활동을 다시 호출합니다. 나는 그것이 어떻게 작동하는지에 만족하지 않고, 목록을 서비스로 옮기고 싶습니다.

아래 제기 된 질문에 대한 응답으로 편집

: 나는 서비스에 (네, 다른 미디어 응용 프로그램) 재생 목록을 통과하려고

. 재생 목록 ArrayList<HashMap<String, String>>은 "songTitle", "this is a title"과 같은 쌍으로 된 노래 정보에 영향을 미치지 않습니다.

그러나 나는 응용 프로그램의 수명주기와 혼동을 느끼고 있다고 생각합니다. 사용자가 재생을 클릭하면 서비스가 생성됩니다. 목록에 정적을 사용하면 서비스가 만들어지면 목록이 표시됩니다. 따라서 서비스는 행복하게이 목록의 노래를 계속 재생합니다. 그러나 사용자가 폴더 등을 변경하면 어떻게 앱이 재생 목록의 변경 사항을 인식하게합니까? 앱이 디자인 된 방식으로 사용자는 언제든지 목록의 트랙을 지울 수 있으며 다른 폴더로 이동할 수도 있습니다. 노래가 완료되면 새 목록이로드되어야합니다. 그 일을하는 가장 좋은 방법은 무엇입니까? 아니면 지금 내가 최선의 방법으로하고있는 방법입니까? 노래가 완료되면 다음 트랙을 요청하는 주 활동으로 브로드 캐스트를 보냅니다. 이 시점에서 서비스를 종료하고 "다음 노래"기능을 사용하여 다시 만들 수 있습니까?

라이프 사이클 혼란!

+0

서비스에 전달하려는 데이터의 종류는 무엇입니까? 해시 맵의 배열? – SemperFly

+0

Parceable 객체를 구현하면 그 객체를 의도에 맞게 추가 할 수 있습니까? 너 그렇게 할 수있어? – smk

+0

서비스가 도착할 때까지 arraylist 편집을 끝냈다 고 가정하면 단순히 정적 변수를 호출하는 대신 정적 변수를 가져 오시겠습니까? – mango

답변

1
모두 ArrayList

HashMapSerializable 구현, 그래서 당신은 단지 의도에 구조를 물건을 할 수 있어야하고, Intent.getSerializableExtra()를 사용하여 검색 할 수 있습니다.

귀하의 활동에서 수행해야 할 일은 Intent.putExtra(String name, Serializable value) 과부하입니다.

가능한 한 정적 변수가 응용 프로그램에 들리는 것을 피하십시오. 앱이 OS에 의해 종료 된 다음 다시 작성되면 (즉, 최근 앱 목록에서) 까다로워집니다.

+0

네, 동의합니다. 나는 통계를 가능한 한 많이 피하고 싶습니다. 그래서 나는 더 나은 데이터 전달 방법을 원했던 것입니다. 직렬화 가능 데이터를 전달하려면이 코드를 작성하는 커스텀 클래스가 필요합니까, 아니면 적절한 시점에'ArrayList'를 던져 주어도 될까요? –

+0

업데이트 된 답변보기 'ArrayList'를'intent.putExtra()'에 넘기기 만하면됩니다. – wsanville

1

데이터를 데이터베이스에 저장하고 데이터가 변경되었다는 의도를 보내는 것을 고려 했습니까? 또는 데이터가 변경되어 다시로드해야한다는 "자체적으로"신호를 보내는 ContentProvider를 사용합니까? 그런 식으로 응용 프로그램이 unexpectectly 닫을 경우에도 상태를 사용하지 않습니다.

+0

나는 그것을 고려하지 않았지만, 전에는 해본 적이 없다. 평생 동안 내게 이야기 할 수 있을까요? 나는 생각하고있다 : 재생 목록을 만들고, 데이터베이스에 저장하라. 재생을 클릭하고 서비스를 시작하십시오. 서비스는 데이터베이스를 검사하여 트랙 1을 재생합니다.다음/완료 재생 트랙 2. 사용자가 재생 목록을 변경하면 서비스는 어떻게 알 수 있습니까? 노래 2가 시작되었다는 것을 어떻게 알 수 있습니까? –

+0

예를 들어 인 텐트가있는 서비스가 트리거됩니다. 열거 형 NEW_PLAYLIST, START, PAUSE, ...이 서비스는 (로컬) 방송을 통해 노래 완성을 알릴 수 있으며, 그 다음 활동에서 처리됩니다. 나는 아직도 그것을 상세히 스스로 시험해야한다. – koljaTM

관련 문제