2011-12-20 1 views
0

예를 들어 데이터베이스 연결, 스레딩 또는 입출력 스트림 (모두 명시 적 클로징/무료)이 사용하는 표준 방법이 있습니까? 아마도 Framework/클래스 소비자가 내 클래스에 대해이 리소스 정리 논리를 호출 할 수 있도록 몇 가지 표준 인터페이스를 구현하면됩니까? 클래스 소비자가 수 확인 것, 그래서 내가 클래스의 인스턴스가 IDisposable 인터페이스를 구현하는지 여부를 Dispose() 방법에있는 모든 자원 정리 로직을 넣을 수 있습니다,이 인터페이스를 구현하여 있도록 .NET Framework 아날로그 일부의 experiance을 가지고 사람들을 위해 서비스 및 기타 리소스를 명시 적으로 닫는 표준 방법이 있습니까?

IDisposable 인터페이스 것 명시 적으로 Dispose()으로 전화하십시오.

안드로이드에도 뭔가가 있습니까?

+0

[이 질문은] http://upackoverflow.com/questions/1768095/idisposable-metaphor-in-java하지만 답변은 Java 7에서 변경되었습니다. "자동 리소스 관리"@ http : //를 참조하십시오. stackoverflow.com/questions/213958/new-features-in-java-7 –

+0

이것은 Android에서도 마찬가지입니다. – sll

답변

1

예, 서비스 및 활동에는 수명주기가 있습니다. 그들이 '닫혀있을'때, onDestroy() 메소드가 호출됩니다. Android에는 여러 라이프 사이클 메소드가 있으며 무엇을 사용해야 하는지를 배우는 것이 중요합니다. 이것은 다음 페이지에 설명되어 있습니다 : 이러한들의 OnDestroy에서 http://developer.android.com/reference/android/app/Activity.html http://developer.android.com/reference/android/app/Service.html

() 메소드, 당신은 당신의 자원을 닫아야합니다. 닫을 리소스가 많은 경우 onDestroy가 호출 될 때 리소스를 반복 할 수 있도록 인터페이스를 구현하고 이러한 리소스를 컬렉션에 저장할 수 있습니다.

+0

특정 서비스의'onDestroy()'를 가로채는 방법은 무엇입니까? 예를 들어'WifiManager'를 사용하여 부울 플래그 값을 읽은 다음 필요가 없습니다. 어떻게하면 해제 할 수 있습니까? – sll

+0

안드로이드 런타임은 당신을 위해'onDestroy()'를 호출합니다. –

+1

실은, 내가 준 기사가 그 사실을 분명히 설명해줍니다. WifiManager는 시스템 서비스이므로 메모리를 많이 차지하지 않습니다. 더 이상 필요하지 않으면 참조를 null로 설정하십시오. WifiManager는 시스템의 일부이므로 삭제할 수 없으며 다른 응용 프로그램에서도 WifiManager를 사용해야 할 수 있습니다. Android는 WifiManager의 라이프 사이클을 관리합니다. 참조를 관리하기 만하면됩니다. – Jordi