Java Android HandlerThread:Handler post不';我有时跑不动
我正在Android上试验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
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);
}
});
}
}