2014-12-23 5 views
0

제 3 자 API (JAudioTagger)를 사용하며이 API 개체 (AudioFile)로 활동을 시작하고 싶습니다.비파괴 성 객체를 전달하여 활동을 시작하는 방법은 무엇입니까?

이 개체는 Parcelable 또는 Serializable을 구현하지 않는 것이 문제입니다.

가장 좋은 방법은 무엇입니까?


편집

구글의 대답 : http://developer.android.com/guide/faq/framework.html

+1

당신은'public static' 객체를 사용할 수 있습니다. –

+0

@BatuhanC'public static' 객체는 내 객체를 전체 프로그램에 노출시킵니다. 안전하지 않니? 유일한 방법입니까? – Pierre

답변

0

몇 가지 옵션이 있으며 어느 것도 쉽거나 완벽하지 않습니다 (개체 및 사용 사례에 따라 다름). 지루한,하지만 불가능하지 될 수 있습니다 -

  1. AudioFile 객체를 확장하고 Serializable 또는 Parcelable 중 하나를 구현하는 사용자 정의 개체를 만듭니다. 이와 같은 사용자 지정 개체를 사용하면이 옵션에 대한 설명서가 부족할 수 있습니다.

  2. 누군가가 static을 옵션으로 언급했습니다. 안드로이드에 관해서 이야기하는 것을 제외하고는 일반적으로 잘 작동합니다. Android는 사용자가 볼 수없는 경우 언제든지 앱의 JVM을 삭제하고 다시 만들 수 있습니다. 따라서이 AudioFile 클래스가 앱의 백그라운드에서 재생중인 경우 Android가 프로세스를 중지하기로 결정하면 이상한 동작이 발생할 수 있습니다.

  3. Application 클래스의 개체를 사용할 수 있지만 잠재적으로 # 2와 같은 문제가 있습니다.

  4. SharedPreferences 및 일부 종류의 색인 시스템을 사용하여 파일을 검색하십시오.

+0

감사합니다.이 포괄적 인 응답에 대해 매우 감사드립니다. 필자의 경우 AudioFile 파일을'File' 파일로부터 재생성 할 수 있습니다. 'File'은'Serializable'을 구현합니다. 그래서 그것을 의도적으로 전달할 수 있습니다. 창조가 시간이 걸리지 않는다면 또 다른 가능성이라고 생각합니다. – Pierre

+0

EventBus를 사용하십시오. 훨씬 쉬우 며 다른 많은 멋진 사용법을 가지고 있습니다. – cYrixmorten

0

당신은 형 AudioFile의 객체를 받아, 그 값으로 필드를 채우는 것이 자신의 클래스를 만들 수 있습니다.

public class MyAudioFile implements Parcelable{ 

private File file; 
//other fields... 

public MyAudioFile(AudioFile audioFile){ 
    this.file = audioFile.getFile(); 
    //populate other fields 
} 

//parcelable stuff 

} 
+0

복잡도가 높은 객체는 어떻게됩니까? 필자의 경우'AudioFile'에는 많은 것들이 포함되어 있습니다 (사실, 오디오 파일에서 발견 된 모든 ID3 메타 데이터와 훨씬 더). 그리고 모든 필드를 검색하는 것은 생각할 수 없습니다. 그러나 나는 그것이 어떻게 내부적으로 작동하는지 모르며 아마도 실수를 할 것입니다. – Pierre

관련 문제