Looper线程不重复

时间:2017-10-22 10:22:36

标签: android multithreading

我想创建另一个线程来循环自己并执行某些操作。 我可以知道我做的任何错误吗?因为它只是执行一次并停止。

public class LooperClazz extends Thread {
private MessageQueue messageQueue;
private Context context;
private long counter = 0;

public LooperClazz(Context context){
    this.context = context;
}

@Override
public void run() {
    Looper.prepare();
    long threadId1 = Thread.currentThread().getId(); //new thread

    final Handler responseHandler = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(Message msg) {
            long mainThreadId = Thread.currentThread().getId(); //1
            //Here success to Toast something.
        }
    };

    messageQueue = Looper.myQueue();
    messageQueue.addIdleHandler(new MessageQueue.IdleHandler() {
        @Override
        public boolean queueIdle() {
            //I'm expecting running this in a loop, but it not, why?
            long threadId2 = Thread.currentThread().getId();
            //Same as threadId1 
            counter++;
            Message msg = new Message();
            msg.obj = counter+ "";
            responseHandler.sendMessage(msg);
            SystemClock.sleep(3000);
            return true;
        }
    });
    Looper.loop();
}
}

在MyApplication中,我只是用

开始
new LooperClazz(context).start();

0 个答案:

没有答案