Android MediaRecorder.finalize()中的TimeoutException在10秒后

Android MediaRecorder.finalize()中的TimeoutException在10秒后,android,android-mediarecorder,Android,Android Mediarecorder,} 细节:这个问题主要出现在android 4.3中 当第一次出现异常时,我们再次进行准备和启动 媒体记录器。此逻辑在4.0中成功运行。。 我不明白为什么会发生这种异常。似乎,如果设备决定睡眠,而GC决定运行,那么这种情况就会发生 见下文: 有时(很少)系统会决定在中间睡觉。 GC运行的一部分 如果睡眠时间很长-超过10秒,将引发concurrent.timeout异常 stacktrace0=java.util.concurrent.TimeoutException: android.med

}

细节:这个问题主要出现在android 4.3中 当第一次出现异常时,我们再次进行准备和启动 媒体记录器。此逻辑在4.0中成功运行。。
我不明白为什么会发生这种异常。

似乎,如果设备决定睡眠,而GC决定运行,那么这种情况就会发生

见下文:

有时(很少)系统会决定在中间睡觉。 GC运行的一部分

如果睡眠时间很长-超过10秒,将引发concurrent.timeout异常

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();
    }
}