제가 만든 class 에서 onDestroy() 에 메모리 할당된 것들을 리셋하는 코드를 넣었는데.
실행이 안되는 것 가틋ㅂ니다.
아래에서 onDestroy() 가 실행되게 하려면 어떻게 선언을 해야 할까요?
상속 받은 객체가 아니라서, @override 도 안되구.... 어떻게 해야..
onDestroy() 가 실행이 안되는 로그캣에
아래 같은 에러가 뜨는데..매우 무섭네요 ^^; has leaked 메모리 누수라는 얘기 같은데....헐....
08-26 01:30:03.074: ERROR/ActivityThread(13879): Activity pkg.MyTTS.MyTTSinActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$1@44910378 that was originally bound here
08-26 01:30:03.074: ERROR/ActivityThread(13879): android.app.ServiceConnectionLeaked: Activity pkg.MyTTS.MyTTSinActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$1@44910378 that was originally bound here
더구나..
디비를 안닫고 종료한다는 에러도....
08-26 01:30:11.564: ERROR/Cursor(13879): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/pkg.MyTTS/databases/TTS.db, table = null, query = SELECT * FROM MyTable
08-26 01:30:11.564: ERROR/Cursor(13879): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
어떻게 해야.. 위의 has leaked 에러를 없앨 수 있을까요?
public class MyTTS {
static SQLiteDatabase DB = null; static Cursor WordTbl = null; private static TextToSpeech mTts; public static void onDestroy() { if (mTts != null) { mTts.stop(); mTts.shutdown(); } if (WordTbl != null) { WordTbl.close(); WordTbl = null; } if (DB != null) { DB.close(); DB = null; } }
..............
}
Cursor 를 안닫았다는 에러는 SELECT 문들을 찾아서... 마지막에 cursor 의 close() 로 모두 닫았습니다.
그런데. has leaked 는 안사라지네요....