Looper没有在Thread类之外调用

时间:2013-01-16 05:05:37

标签: android handler looper

我正在学习如何在android开发中使用Looper和Handler类 http://developer.android.com/reference/android/os/Looper.html android开发中给出的例子不清楚是什么用法以及如何使用它。我不知道如何在Looper中添加Handler以及如何调用Looper来循环。 如果它可用,任何人都可以给我一个简单的例子来使用它。

public class LooperTest extends Activity{

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
private class LooperTesting extends Thread
{
    public Handler handler;
    public void run()
    {
        Looper.prepare();
        handler = new Handler()
        {
            public void handlerMessage(Message msg)
            {
                    // do something
            }
        };
        Looper.loop();

    }
}
}

2 个答案:

答案 0 :(得分:0)

希望这个链接对你有帮助

  1. Link1
  2. Link2
  3. Link3

答案 1 :(得分:0)

在您的示例中,您只定义了一个带有Looper的线程。您需要先使用关联的Looper启动Thread,然后才能向其发送任何消息。我在你的例子中添加了一些代码来说明必须做的事情:

public class LooperTest extends Activity{

    LooperTesting mBgThread;

    public void onCreate(Bundle savedInstanceState)
    { 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mBgThread = new mBgThread();

        // Start the thread. When started, it will wait for incoming messages.
        // Use the post* or send* methods of your handler-reference.
        mBgThread.start();
    }

    public void onDestroy() {
        // Don't forget to quit the Looper, so that the
        // thread can finish. 
        mBgThread.handler.getLooper().quit();
    }

    private class LooperTesting extends Thread
    {
        public Handler handler;
        public void run()
        {
            Looper.prepare();
            handler = new Handler()
            {
                public void handlerMessage(Message msg)
                {
                    // do something
                }
            };
            Looper.loop();
        }
    }
}