0

让我们说 android 应用程序有不止一个活动和服务。他们每个人都使用文本到语音。我理解所有这些活动和服务都在同一个进程中运行,除非我们明确指定在单独的进程中运行。我们知道一次只有一个是活跃的。

如果是这种情况,我们是否有任何方法可以在一个活动中初始化文本到语音引擎并在其他活动/服务中引用它?

例子

ptrTTS = new TextToSpeech(this, this);

在一项活动中并在其他活动/服务中引用它?

进行此初始化的最佳位置是什么?

oncreate是否安装了oninitTTS 的文本转语音或活动结果中的内容?

4

1 回答 1

0

据我了解, TextToSpeech() 只是另一个类。如果你在一个活动中创建一个对象,当你移动到另一个活动时它会被销毁。
在活动之间共享同一个对象有不同的方法,比如通过意图传递它们。
在您的情况下,您可以创建一个定义 ptrTTS 的应用程序类,如下所示(但不确定它是否正确):

class MyApp extends Application {

  private TextToSpeech ptrTTS;

  public TextToSpeech getObject(){
    return ptrTTS;
  }
  public TextToSpeech setObject(TextToSpeech obj){
    ptrTTS = obj;
  }
}

然后你选择你的第一个 Activity 来初始化它。

class MainActivity extends Activity {

  @Override
  public void onCreate(Bundle b){
    ...
    TextToSpeech ptr = new TextToSpeech(this, this);
    MyApp appState = ((MyApp)getApplicationContext());
    appState.setObject(ptr);
    ...
  }
}
于 2012-09-13T05:34:51.370 回答