2012-09-13 26 views
0

讓我們說android應用程序有多個活動和服務。 他們每個人都使用文本到語音。我知道所有這些活動和服務 都運行在同一個進程中,除非我們明確指定在單獨的進程中運行。我們知道一次只有一個是活躍的。在所有活動中啓動文本到語音?

如果是這種情況,我們是否有任何方法在一個活動中初始化文本到語音引擎 並在其他活動/服務中引用它?

例如

ptrTTS = new TextToSpeech(this, this); 

在一個活動和其他活動/服務的參考呢?

什麼是做這個初始化的最佳位置?

in oncreate or oninit of the Text to Speech or onactivity結果是否安裝了TTS?

回答

0

從我的理解,TextToSpeech()只是另一個類。如果您在一項活動中創建一個對象,那麼當您移動到另一項活動時它將被銷燬。
在活動之間共享同一個對象有不同的方式,例如通過意圖傳遞它們。
你的情況,你可以把一個應用程序類,可以定義ptrTTS,像這樣(不知道這是否是正確的,雖然):

class MyApp extends Application { 

    private TextToSpeech ptrTTS; 

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

你選擇你的第一個活動進行初始化。

class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle b){ 
    ... 
    TextToSpeech ptr = new TextToSpeech(this, this); 
    MyApp appState = ((MyApp)getApplicationContext()); 
    appState.setObject(ptr); 
    ... 
    } 
} 
+0

謝謝。我會嘗試。 – user1123931