im trying to compare a text in android to avoid refreshing texts if it's not necessary (otherwise the texts for different fields are refreshed every 50ms).
With normal texts it is not a problem. Everything works fine. But: If there are numbers in text the text seems not to be equal. Why?
Some examples: "Abschaltpunkt" is equal to "Abschaltpunkt" (OK) / "Gewicht" is equal to "Gewicht" (OK) / "100 kg" is NOT equal to "100 kg" (NOK) / "Abschaltpunkt 2" is NOT equal to "Abschaltpunkt 2" (NOK"
A new question after edit (the comparsion works fine now). As you see I use the UI thread for refreshing the text. This app works in a network and receives arround 300 messages per second with different data (yes, it is necessary). Therefore I need the comparsion otherwise the thread is blocked and the app won't respond on user inputs. Is there another solution? Or is my solution a good one?
This is my code:
/**
* Compares the current and new text und updates the text if necessary
* @param RessourceID given by R.id...
* @param New text
*/
private void ChangeText (final int RessourceID, final String sText) {
try {
TextView tv = (TextView) findViewById(RessourceID);
// Erst prüfen ob Text ersetzt werden muss -> Spart Rechenzeit
if (tv.getText().toString().equals(sText)) {
Log.e(this.getClass().getSimpleName(), "Text nicht ersetzen: " + tv.getText() + " != " + sText);
} else {
ChangeTextThread(tv, sText);
Log.e(this.getClass().getSimpleName(), "Text ersetzen: " + tv.getText() + " != " + sText );
}
} catch (Throwable t) {
Log.e(this.getClass().getSimpleName(), "ChangeText", t);
}
}
/**
* Change the text in UI tread
*/
private void ChangeTextThread (final TextView tv, final String sText) {
this.runOnUiThread(new Runnable() {
public void run() {
try {
tv.setText(sText);
} catch (Throwable t) {
Log.e(this.getClass().getSimpleName(), "ChangeTextThread", t);
}
}
});
}