Na poczatku dziekuje za dobre checi. Mysle, ze nie bylo potrzeby modyfikacji statusu.
Przyklad optymalizacji (a wlasciwie dobrej praktyki) poprzez uzycie StringBuffer byl juz przytaczany wiele razy na tym forum, podobnie jak byl uzyty kilka watkow wczesniej. Chodzi o to, aby zamiast konstrukcji:
String s = "";
char c = 0;
while(...) {
c = input.read();
s += new String(c);
}
uzyc bufor lancuchow znakow StringBuffer
StringBuffer sb = new StringBuffer();
char c = 0;
while(...) {
c = input.read();
sb.append();
}
String s = sb.toString();
Jesli chodzi o wyjatki, to nagle zakonczenie wykonywania metody (spowodowane wygenerowaniem wyjatku) jest bardziej kosztowne od normalnego powrotu z funkcji (return). Dzieje sie tak dlatego, ze w momencie wystapienia wyjatku, exception-handler wirtualnej maszyny Java sprawdza, czy w danej metodzie jest sekcja catch, ktora dotyczy danego wyjatku. Jesli nie, ze stosu zdejmowany jest blok powiazany z ta metoda, a nastepnie ponowne poszukiwanie sekcji catch w metodzie nadrzednej. I tak do momentu, kiedy wyjatek zostanie przechwycony lub exception-handler dotrze do metody glownej. Wtedy to juz pojdzie printStackTrace() na konsole.
W Twoim przypadku przenioslbym pobieranie etykiet do osobnej klasy. Pozwoli to na podzielenie aplikacji na logiczne bloki (zapewne znana strategia "dziel i zwyciezaj"), a dodatkowo bedziesz mogl utworzyc sobie obiekt tylko wtedy, kiedy bedzie to potrzebne (w chwili obecnej metoda get_helloForm(), od momentu utworzenia MIDletu, caly czas zajmuje zasoby).
Przechwytywanie wyjatku (blok try...catch...finally) oczywiscie musi dotyczyc zestawiania polaczenia oraz otwierania i zamykania strumienia.
Pozdr.</i>