Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android HandlerThread:Handler post不';我有时跑不动_Java_Android_Android Handler_Android Handlerthread - Fatal编程技术网

Java Android HandlerThread:Handler post不';我有时跑不动

Java Android HandlerThread:Handler post不';我有时跑不动,java,android,android-handler,android-handlerthread,Java,Android,Android Handler,Android Handlerthread,我正在Android上试验HandlerThread,我似乎无法解释一种奇怪的行为。这里有一个类,我使用它来简单地通过这个独特的线程记录消息 public class HandlerLogger { MyHandler mHandler; HandlerThread myThread; private class MyHandler extends Handler { public MyHandler(Looper myLooper) { super(m

我正在Android上试验
HandlerThread
,我似乎无法解释一种奇怪的行为。这里有一个类,我使用它来简单地通过这个独特的线程记录消息

public class HandlerLogger {
    MyHandler mHandler;
    HandlerThread myThread;

    private class MyHandler extends Handler {
        public MyHandler(Looper myLooper) { super(myLooper); }
    }

    public HandlerLogger() {
        myThread = new HandlerThread("my super thread");
        myThread.start();
        mHandler = new MyHandler(myThread.getLooper());
    }

    public void log(final String s) {
        mHandler.post(new Runnable() {
            @Override
            public void run() { Log.d("handler", s); }
        });
    }
}
下面是我对这个类的用法:

    HandlerLogger h = new HandlerLogger();
    for (int i = 0; i < 1000; i++) {
        h.log(String.valueOf(i));
    }
只要检查一下hitsCounter,你就会发现它实际上等于预期的1000

    public class HandlerLogger {
    MyHandler mHandler;
    HandlerThread myThread;
    int hitsCounter;

    private class MyHandler extends Handler {
        public MyHandler(Looper myLooper) { super(myLooper); }
    }

    public HandlerLogger() {
        myThread = new HandlerThread("my super thread");
        myThread.start();
        mHandler = new MyHandler(myThread.getLooper());
    }

    public void log(final String s) {
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                hitsCounter++;
                Log.d("handler", s);
            }
        });
    }
}