Browse Source

TtsService: fix a 'leaked receiver' exception.

master
Reece H. Dunn 12 years ago
parent
commit
5ba4971d6b
1 changed files with 20 additions and 8 deletions
  1. 20
    8
      android/src/com/reecedunn/espeak/TtsService.java

+ 20
- 8
android/src/com/reecedunn/espeak/TtsService.java View File

super.onCreate(); super.onCreate();
} }


@Override
public void onDestroy() {
super.onDestroy();
if (mBroadcastReceiver != null) {
unregisterReceiver(mBroadcastReceiver);
}
}

/** /**
* Sets up the native eSpeak engine. * Sets up the native eSpeak engine.
*/ */
@Override @Override
protected int onIsLanguageAvailable(String language, String country, String variant) { protected int onIsLanguageAvailable(String language, String country, String variant) {
if (!CheckVoiceData.hasBaseResources(this) || CheckVoiceData.canUpgradeResources(this)) { if (!CheckVoiceData.hasBaseResources(this) || CheckVoiceData.canUpgradeResources(this)) {
final IntentFilter filter = new IntentFilter(DownloadVoiceData.BROADCAST_LANGUAGES_UPDATED);
registerReceiver(mBroadcastReceiver, filter);
if (mBroadcastReceiver == null) {
mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
initializeTtsEngine();
}
};

final IntentFilter filter = new IntentFilter(DownloadVoiceData.BROADCAST_LANGUAGES_UPDATED);
registerReceiver(mBroadcastReceiver, filter);
}


final Intent intent = new Intent(this, DownloadVoiceData.class); final Intent intent = new Intent(this, DownloadVoiceData.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
/** /**
* Listens for language update broadcasts and initializes the eSpeak engine. * Listens for language update broadcasts and initializes the eSpeak engine.
*/ */
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
initializeTtsEngine();
}
};
private BroadcastReceiver mBroadcastReceiver = null;
} }

Loading…
Cancel
Save