2012-02-20 43 views
1

所以我在我的android應用程序中有一個活動,它在開始時運行。
此活動只是一個帶有開始按鈕的頁面。
當我按下啓動按鈕,它調用另一個活動,並自行關閉:Android - 關閉活動後,當我再次運行應用程序時,兩個活動同時運行。我怎樣才能避免它?

Intent i = new Intent(this, Dictating.class); 
startActivity(i); 
finish(); 

的其他活動使用文本到語音口述一些單詞。
現在我發生了一些奇怪的事情:

1)我聽聽口述。
2)我按下後退按鈕:聽寫停止(我想要的)
3)我再次運行應用程序,按下開始按鈕。現在我開始了新的活動,並開始口述,但是在後面,我可以聽到舊的活動恢復到原來的位置,並繼續聽寫。

我想要新的活動重新開始,而不是保持其他活動。
我該怎麼做?

PS:這是一個活動的問題,而不是因爲我沖洗文本到語音每次文本到語音的問題,它不能被保存在內存

謝謝

編輯:

這裏是我的聽寫類的OnCreate,有萬噸的在這個類的代碼,我顯然不希望發佈我的代碼,所以這裏是一些地方:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.streaming); 

    Intent checkIntent = new Intent(); 
    checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
    startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); 

    this.txtCurrentWord = (TextView) findViewById(R.id.txtCurrentWord); 
    this.btnPlayPause = findViewById(R.id.btnPlayPause); 
    this.btnPlayPause.setOnClickListener(this); 

} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == MY_DATA_CHECK_CODE) { 
     if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
      // success, create the TTS instance 
      this.tts = new TextToSpeech(this, this); 
     } else { 
      // missing data, install it 
      Intent installIntent = new Intent(); 
      installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
      startActivity(installIntent); 
     } 
    } 
} 

還有一些奇怪的薄gs我這樣做:

Runnable task = new Runnable() { 
    public void run() { 
     //runs on ui 
     runOnUiThread(new Runnable() { 
      public void run() { 
       readNextWord(); 
      } 
     }); 
    } 
}; 
worker.schedule(task, 1, TimeUnit.SECONDS); 

這延遲了下一個字一秒,然後執行在主UI線程中的功能。

@Override 
public void onDestroy() { 
    tts.shutdown(); 
    super.onDestroy(); 
} 
+0

發佈您的'聽寫'的代碼。類' – Squonk 2012-02-20 21:04:48

+0

我已經添加了代碼 – xtrimsky 2012-02-20 21:19:37

+0

的某些部分行,但是當活動關閉時,您正在沖洗TTS的位置在哪裏? – Squonk 2012-02-20 21:26:36

回答

1

您需要launchMode屬性添加到您的活動中AndroidManifest文件,詳見"Using the manifest file"

+0

我已經嘗試了聽寫活動的所有模式,他們都沒有工作。 One甚至打開Market App,要求我安裝文本到語音(怪異) – xtrimsky 2012-02-20 21:09:05

0

這個問題是在:如果這件事情

,並在年底一些沖洗不知道但我不能相信沒有人給過你正確的答案。另外,我認爲你不應該接受一個顯然沒有爲你解決任何問題的答案。通過接受這樣的答案,您只需將垃圾郵件的StackOverflow谷歌搜索結果混淆爲具有相同問題的其他人即可。

你最後做的臉紅是完全錯誤的。根據Activity生命週期,onDestroy()永遠不會被保證被調用。如果你想確保正確完成沖洗,在onPause()內部執行。

現在我給你的解決方案確實解決了你描述的主要問題。但是,如果您有時間做更完整的重寫,則需要使用綁定到活動的服務。這會給你更好的控制你需要的。

相關問題