У меня есть приложение с двумя потоками - основной и загрузчик данных. Когда загрузчик данных завершает работу, он отправляет объект Runnable в основной поток (как описано в DevGuide), но он никогда не доставляется и не запускается.
Вот основной код:
class MyApp extends Application
{
public void onCreate()
{
LoaderThread t = new LoaderThread();
t.start();
}
private class LoaderThread extends Thread
{
public void run()
{
SystemClock.sleep(2000);
boolean res = m_handler.post(m_runnable);
if(res)
Log.d(TAG, "Posted Runnable");
}
}
private final Handler m_handler = new Handler();
private final Runnable m_runnable = new Runnable() {
public void run()
{
Log.d(TAG, "Hey, i'm runnable!");
}
}
}
Также может быть важно отметить, что я запустил этот код как модульный тест, полученный из ApplicationTestCase:
class MyAppTest : public ApplicationTestCase
{
public MyAppTest()
{
super(MyApp.class);
}
public void testLoading()
{
createApplication();
// few asserts follow here...
}
}
Так что это не получается. Runnable никогда не вызывается run (), хотя журнал указывает, что он был успешно опубликован.
Я также пытался отправлять простые сообщения вместо публикации runnable (например, m_handler.sendEmptyMessage (1)) - они никогда не доставляются к обратному вызову обработчика в основном потоке.
Что мне здесь не хватает?
Заранее спасибо:)