【发布时间】:2016-01-29 15:01:32
【问题描述】:
在加载 ativity 时,我必须初始化 TextTOSpeech API 的对象,但是当我初始化我的 TTS 对象时,启动 Activity 需要 4-5 秒。我尝试在 Async Task 和 Thread 中初始化它,但结果是一样的。如何让我的活动加载更快?这是我的线程初始化 TTS 对象的代码。
class LoadingThread implements Runnable{
@Override
public void run() {
//load settings of the app
appSettings = new AppSettings(getApplicationContext());
appSettings.loadSettings();
//making ready TTS before the user interact with it
textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
ttsOptions = new HashMap<String, String>();
ttsOptions.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,ActivityMain.UTTER_ID);
textToSpeech.setLanguage(Locale.ENGLISH);
textToSpeech.setSpeechRate(AppSettings.getSpeakerSpeed());
}
});
textToSpeech.setOnUtteranceCompletedListener(new TextToSpeech.OnUtteranceCompletedListener() {
@Override
public void onUtteranceCompleted(String s) {
ActivityMain.mNotepad.onStopSpeaker(s);
}
});
}
}
我在我的活动的 onResume() 中调用这个线程,比如
LoadingThread thread = new LoadingThread();
thread.run();
【问题讨论】:
-
您能否发布您的整个 onCreate 以及活动的 XML。
-
您是否在真实设备上试用过您的应用?因为模拟器可能有那么多时间来启动。
-
@katmanco 我使用的是我的真实设备而不是虚拟设备
-
如果加载需要那么长时间,那么加载需要那么长时间。你不会改变这一点。但是处理它的方式(并根据 Google 设计指南),您应该以 UI 快速加载并允许用户快速与其交互的方式设计您的 Activity,即使他们必须看到进度微调器或其他东西当 TTS api 在后台加载时。
标签: android multithreading android-activity