Это довольно распространенная проблема с использованием android looper, но очень странно, что я использую HandlerThread и никогда не вызываю Looper.prepare.Понятия не имею, почему это происходит.
Весь журнал аварий ниже:
java.lang.RuntimeException: process_network1
на com.xiaomi.smarthome.library.common.util.MessageHandlerThread.run (MessageHandlerThread.java:43)
Причина: java.lang.RuntimeException: только один лупер может быть создан для потока
на android.os.Looper.prepare (Looper.java:92)
в android.os.Looper.prepare (Looper.java:87)
в android.os.HandlerThread.run (HandlerThread.java:54)
на com.xiaomi.smarthome.library.common.util.MessageHandlerThread.run (MessageHandlerThread.java:40)
MessageHandlerThread находится ниже:
public class MessageHandlerThread extends HandlerThread {
private static final int DUR_TIME = 2 * 60 *60 *1000;
private static final int MSG_EMPTY_MSG = 1;
private Handler mHandler;
public MessageHandlerThread(String name) {
super(name);
}
public MessageHandlerThread(String name, int priority) {
super(name, priority);
}
void init() {
mHandler = new Handler(this.getLooper()) {
@Override
public void handleMessage(Message msg) {
mHandler.sendEmptyMessageDelayed(MSG_EMPTY_MSG, DUR_TIME);
}
};
mHandler.sendEmptyMessageDelayed(MSG_EMPTY_MSG, DUR_TIME);
}
@Override
public synchronized void start() {
super.start();
init();
}
@Override
public void run() {
try {
super.run();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(getName(), e);
}
}
}
Вылетает в " super.run () ;"Почему это происходит?Кажется, заходишь дважды?Я абсолютно никогда не вызываю " thread.run () "