我不得不将 Looper 添加到以下代码中:
public class MyRunnable implements Runnable
{
@Override
public void run()
{
Looper.prepare();
final Looper looper = Looper.myLooper();
new Handler().postDelayed(
new Runnable()
{
@Override
public void run()
{
try
{
}
catch (Exception ex)
{
}
finally
{
looper.quit();
}
}
}, 100);
Looper.loop();
}
}
请注意,我在可运行文件中有一个可运行文件。嵌套的 runnable 通过 Handler 执行。最初我没有 Looper,但 Android 抱怨说我需要在执行另一个线程之前调用 Looper.prepare。
我阅读了 Looper,但它似乎仍然有点神秘。它似乎就像某种内部消息传递管道。我不清楚为什么这是必要的,因为没有消息从我的外部运行到我的内部运行。尽管这是真的,但似乎 Android 只是制定了一个硬性规则,即如果你从一个线程调用一个线程,你也必须调用 Looper.prepare。即使我按原样接受,它仍然无助于理解为什么我需要调用 looper.loop 和 looper.quit。如果我省略 Looper.loop,我的 Handler 永远不会运行,这是不清楚的。Looper.loop 做了什么让我的 Handler 运行?