Кажется, что вы разместили здесь всю свою активность, и она также включает в себя услугу, и вы не пытались сузить свою проблему.
в вашей ветке route_calc, которую вы вызываете showToast, это, вероятно, одна из ваших проблем, вам следует вызвать showToast (или любую другую функцию пользовательского интерфейса) из вашего обработчика.
Примерно так:
Делайте все, что вы хотите в своей теме:
new Thread(new Runnable()
{
@Override
public void run()
{
try
{
someHeavyStuffHere(); //Big calculations or file download here.
handler.sendEmptyMessage(SUCCESS);
}
catch (Exception e)
{
handler.sendEmptyMessage(FAILURE);
}
}
}).start();
Когда ваши данные будут готовы, попросите обработчик поместить их в представление и показать:
protected Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if (msg.what == SUCCESS)
{
setCalculatedDataToaView(); // the data you calculated from your thread can now be shown in one of your views.
}
else if (msg.what == FAILURE)
{
errorHandlerHere();//could be your toasts or any other error handling...
}
}
};