Tak wygląda mój wątek:
public class TacticalOverviewFiller extends Thread{
TextView host,host_p,host_u,service,service_p,service_u;
ConnectionManager cm;
int interval=30000;
public TacticalOverviewFiller(TextView host,TextView host_p, TextView host_u, TextView service, TextView service_p, TextView service_u, ConnectionData cd)
{
super();
this.host=host;
this.host_p=host_p;
this.host_u=host_u;
this.service=service;
this.service_p=service_p;
this.service_u=service_u;
try
{
this.cm=new ConnectionManager(cd);
}
catch (Exception e){}
}
public void setMSecInterval(int i)
{
interval=i;
}
public void setSecInterval(int i)
{
interval=i*1000;
}
@Override public void run()
{
String page;
//while (true)
{
try
{
cm.reload();
}
catch(Exception e)
{
//continue;
}
page=cm.getPageContent();
host.setText(PageParser.findCountHosts(page));
try{
sleep(interval);
}
catch (Exception e){}
}
}
}
Początkowo chciałem go odpalać przy pomocy metody Thread.start(), ale szybko doszedłem do wniosku, że linijka w której pojawia się host.setTest(“string”) powoduje zwias aplikacji. Znalazłem więc informację, że wypadałoby użyć Action.runOnUiThread(Thread); ale niestety takie rozwiązanie działa niewiele lepiej… Mój Action co prawda się włącza, ale trochę czasu mu to jednak zajmuje, a sam TextView w którym chcę zmieniać tekst nigdy się nie pojawia (tzn. teoretycznie tam jest, ale nie ma w nim żadnego tekstu). Cóż więc robię źle?