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

问题描述:

线程处理中的looper和while循环有什么区别? 我想这个代码和它的作品就像我用尺蠖处理程序:线程处理中的looper和while循环有什么区别?

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(); 
        } 
       }; 

实际上,“汉书”就像处理程序的一类,但因为处理程序错误没有活套,我做了一个特殊的课,叫做“汉”。和“h”是一个全局变量

+1

你想要制造大量的汉族实例吗? –

+0

你的答案在下一个答案 –

+0

android中的looper的任务是从消息队列中检索消息并确保消息在正确的处理程序上处理。如果消息队列中没有消息,它将阻塞并等待传入​​的消息。 ** android.os.Looper **中存在方便的循环类。 **另一方面,虽然循环**,可能无法通过智能来确定在正确的处理程序和线程上执行 – Sanny

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

“用于为线程运行消息循环的类”。所以它所说的是,一个活套可以让你发送消息给实例化的线程。我现在假设,但我不认为它会耗尽资源,直到它收到消息,可能通过循环内的智能同步/等待组合。

现在,您的while循环将无限期地运行,并且非常频繁地创建新的han对象。您应该看到垃圾收集器运行以收集这些对象。但是,是的,你的代码应该可以工作,并且你应该能够接收消息,但是需要很高的资源成本。 (如果你没有在一个while循环中运行,你的线程将会完成并且什么都不会发生,这就是活套可以防止的事情。)

+0

确定,但是我可以从汉字中移除抽象标签(但仍然覆盖handleMessage),并定义实例在循环之前,然后只处理循环中的消息。 –

+0

没有正文答案? –