线程处理中looper和while循环之间的区别是什么?

时间:2016-04-28 21:40:14

标签: android multithreading

线程处理中looper和while循环之间的区别是什么? 我尝试了这个代码,就像我使用带有Looper的Handler一样:

public abstract class han {
public abstract void handleMessage(Message message);
public void sendMessage(Message message)
{
    handleMessage(message);
}
}

然后:

                while (0 == 0) {
                h = new han() {
                    @Override
                    public void handleMessage(Message message) {
                        Toast.makeText(thr.this, "mm", Toast.LENGTH_SHORT).show();
                    }
                };
实际上," han"是一个类似Handler的类,但由于Handler错误没有looper,我做了一个特殊的类来做那个叫做" han"。和" h"是一个全局变量

1 个答案:

答案 0 :(得分:0)

简而言之,looper是一个在Thread中运行的便利类。 来自文档:http://developer.android.com/reference/android/os/Looper.html

"用于为线程运行消息循环的类。"所以它说的是一个looper允许你向实例化的线程发送消息。我现在可能是,但我不认为它会消耗资源,直到它收到消息,可能是通过looper内部的智能同步/等待组合。

现在你的while循环将无限期地运行并创建新的han对象,这是很常见的。您应该看到Garbage收集器运行以收集这些对象。但是,是的,您的代码应该可以工作,并且您应该能够接收消息,但需要花费大量的资源。 (如果你不在while循环中运行,你的线程就会完成,什么都不会发生,这就是looper阻止的。)