10秒后MediaRecorder.finalize()中的TimeoutException

stacktrace0=java.util.concurrent.TimeoutException: android.media.MediaRecorder.finalize() timed out after 10 seconds at android.media.MediaRecorder.native_finalize(Native Method) at android.media.MediaRecorder.finalize(MediaRecorder.java:1200) at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:187) at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170) at java.lang.Thread.run(Thread.java:841) if (isDirectoryExists) { MediaRecorder recorder= new MediaRecorder(); recorder.reset(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(path); recorder.setMaxDuration(30*60*1000); if(recorder!=null) { recorder.prepare(); } try { if(recorder!=null) { recorder.start(); isRecordingStarted=true; } } catch (IllegalStateException ilse) { try { if(recorder!=null) { recorder.prepare(); } } catch(Exception e) { e.printStackTrace(); } try { if(recorder!=null) { recorder.start(); } } catch(Exception e) { e.printStackTrace(); } } 

}

详细说明:这个问题主要是在我们再次准备和启动媒体记录器时第一次发生exception时到达android 4.3。 这个逻辑在4.0中成功运行..我不明白为什么会发生这种exception。

似乎如果设备决定睡觉,并且GC决定运行,那么这将会发生。

见下文:

有时(非常罕见)系统将决定在GC运行过程中hibernate。

如果睡眠时间很长 – 超过10秒,将抛出concurrent.timeoutexception。

如何处理:java.util.concurrent.TimeoutException:android.os.BinderProxy.finalize()在10秒后错误超时?