Понятия не имею, почему вы ставите Лупер в
contextActivity.runOnUiThread(new Runnable() {
public void run()
{
Looper.prepare();
TextView tv = (TextView ) contextActivity.findViewById(R.id.notifyTest);
Looper.loop();
}
});
потому что поток UI (основной) уже имеет Looper / Handler и т. Д.
Даже если это сработало, Looper.loop()
будет блокироваться, и, поскольку вы запускаете его в потоке пользовательского интерфейса, оно заблокирует поток пользовательского интерфейса, что не соответствует вашим ожиданиям.
Что вы действительно хотите сделать, это
contextActivity.runOnUiThread(new Runnable() {
public void run()
{
TextView tv = (TextView ) contextActivity.findViewById(R.id.notifyTest);
tv.setText("do something that must be on UI thread") // or whatever
}
});
Вам не нужно делать все эти причудливые вещи, чтобы получить задание
activityClass = Class.forName("com.pakage.FirstActivity");
contextActivity = (Activity) activityClass.newInstance();
при условии, что Сервис и Действие выполняются в одном и том же процессе, вы можете просто сохранить ссылку на Действие, но будьте осторожны при обновлении ссылки, когда Действие будет уничтожено.