run()内部无法识别上下文

时间:2015-12-08 11:50:32

标签: java android timer android-asynctask timertask

我在AsyncTask中有一个TimerTask,定时器调用下面发布的speakOut类来发音。当我使用SpeakOut1类时,文本不是 发音完全,但当我使用SpeakOut2类时,文本发音应该是。

在任何一种情况下,我都使用getApplicationContext()从AsyncTask传递上下文。

任何人都可以解释为什么它不能用于SpeakOut1并且它在SpeakOut2中有用吗?

请让他们知道如何解决它

SpeakOut1

private class SpeakOut extends TimerTask {

        private Context mCtx = null;
        private String mText = null;
        private TTSCtrl mTTS = null;

        public SpeakOut(Context ctx, String text) {
            this.mCtx = ctx;
            this.mText = text;
        }

        @Override
        public void run() {
            this.mTTS = new TTSCtrl(this.mCtx);
            this.mTTS.pronounce(this.mText);
        }
    }
}

SpeakOut2

private class SpeakOut extends TimerTask {

        private Context mCtx = null;
        private String mText = null;
        private TTSCtrl mTTS = null;

        public SpeakOut(Context ctx, String text) {
            this.mCtx = ctx;
            this.mText = text;
            this.mTTS = new TTSCtrl(ctx);
        }

        @Override
        public void run() {
            //this.mTTS = new TTSCtrl(this.mCtx);
            this.mTTS.pronounce(this.mText);
        }
    }
}

0 个答案:

没有答案