在onHandleIntent之后直接调用IntentService的onDestroy方法

时间:2014-11-12 15:13:44

标签: java android intentservice ondestroy

我正在使用IntentService在我的应用中通过AudioRecord录制音频。 在onHandleIntent方法中,我调用我用于处理录制的单独类的.getInstance,然后调用该类的几个方法。

然而,只要intentService启动,就会调用其onDestroy方法,并停止录制。 在onHandleIntent中实例化的类中,音频仍在录制,直到onDestroy被调用。 因此,在录制完成之前,onDestroy肯定不会被调用。

如果有人可以就此为何提出建议,我们将不胜感激。

我的IntentService代码如下:

public class RecordService extends IntentService {
    public File directory;
    AudioRecord audioRecord;
    int sampleRate = 44100;
    int channelConfiguration = AudioFormat.CHANNEL_IN_MONO;
    int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
    File file;
    short channels = 1;
    int bitsPerSample = 16;
    public RecordService() {
        super("Record");
    }
    ExtAudioRecorder extAudioRecord;

    @Override
    protected void onHandleIntent(Intent intent) {

        Log.v("Record", "Record called");
        extAudioRecord = ExtAudioRecorder.getInstanse(false);
        extAudioRecord.reset();
        extAudioRecord.setOutputFile(getOutputFile("RecV2").toString());
        extAudioRecord.prepare();

        extAudioRecord.start();
        //record();
    }
    public void onDestroy(){
        extAudioRecord.stop();
        //audioRecord.stop();
        Log.v("Record", "onDestroy called, Record stopped");

    }

1 个答案:

答案 0 :(得分:0)

我相信extAudioRecord.start();是非阻止的,这意味着它会立即返回onHandleIntent()。调用onDestroy后不久就会终止IntentService。