【问题标题】:Android Looper and Thread doesn't seem to workAndroid Looper 和 Thread 似乎不起作用
【发布时间】:2012-11-12 02:09:31
【问题描述】:

您好,我正在尝试在 Android 中使用带有处理程序和循环器的线程。

线程类:

public void run() {
    Looper.prepare();

    handler = new AndroidHandler(context);
    Looper.loop();

    while (!stopMe) {
                       someMethod();
               }
           ((Handler) handler).getLooper().quit();
 }

public void someMethod(){
  Log.i("New System", "Handling ");
    order ++;
    Message m=handler.obtainMessage();
    m.arg1=order;
    handler.sendMessage(m);
 }

在一个单独的类中:

public class AndroidHandler extends Handler{
   public AndroidHandle(Context){
        super();
  }
   public void dispatchMessage(Message m) {
    super.dispatchMessage(m);

}
   @Override
public void handleMessage(Message msg) {

    Log.i("New System", "handling Message "+msg.arg1);
   }
 }

没有用!!!没有发送消息,控制台中没有打印任何内容,我不知道如何解决它....这里有什么问题有什么想法吗?谢谢

ps:我不想使用ui线程我想在单独的线程中执行此操作。

【问题讨论】:

    标签: android multithreading looper


    【解决方案1】:

    那是因为您在与 looper 相同的线程中执行无限 while 循环!所以这个线程一直很忙,无法接收消息...

    你需要让 Looper 自己的线程。

    假设你这样设置你的looper线程:

    class LooperThread extends Thread {
      public Handler handler;
    
      public void run() {
          Looper.prepare();
    
          mHandler = new Handler() {
              public void handleMessage(Message msg) {
                  Log.i("New System", "handling Message "+msg.arg1);
              }
          };
    
          Looper.loop();
      }
    }
    
    LooperThread looper = new LooperThread();
    looper.start();
    

    然后您可以从任何其他线程(UI 线程或任何其他线程)发送消息,就像您所做的一样:

    Handler handler = looper.handler;
    Message m = handler.obtainMessage();
    m.arg1 = order;
    handler.sendMessage(m);
    

    但不要从与弯针相同的线程中执行此操作,否则没有任何意义。

    【讨论】:

    • 请正确处理程序 handler = looper.handler; to Handler handler = looper.mHandler;
    猜你喜欢
    • 1970-01-01
    • 2011-07-27
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 2016-11-24
    相关资源
    最近更新 更多