Случайные числа генерируются с использованием кода ниже Несмотря на вызов message.recycle ();Возникает исключение AndroidRuntimeException с описанием - «Это сообщение уже используется» при вызове sendMessage (...)
Существует ли способ проверить, находится ли сообщение виспользовать?Что я здесь не так делаю?
RandomGenerator implements Runnable{
....
public void run(){
...
while(true){
synchronized(randomizer){
temp = randomizer.nextFloat() * scaleFactor;
}
Bundle bundleodata = new Bundle();
bundleodata.putFloat( null, temp );
synchronized(handler){
Message messedUp = Message.obtain(handler);
messedUp.setData(bundleodata);
handler.sendMessage(messedUp);
}
Thread.yield();
}
}
....
}
Тело обработчика переопределяет handleMessage следующим образом
public void handleMessage( Message message ){
String strStuff = Float.valueOf( message.getData(null).getFloat() ).toString();
textVw.setText(strStuff);
message.recycle();
}
РЕДАКТИРОВАТЬ: Итак, после того как я удалил 'message.recycle ();'исключение больше не выбрасывается.Однако мне все еще любопытно, почему исключение больше не выдается теперь, когда удален вызов для переработки объекта.Идеи, кто-нибудь?
РЕДАКТИРОВАТЬ: замена вызова
msg.recycle();
на
removeMessages(0);
получил желаемый результат, то есть автоматическое обновление текстового представления.Но я добрался до этой стадии эмпирически, а не через логику / анализ. Было бы неплохо, если бы мы могли понять, почему
msg.recycle();
привел к исключению, о котором я первоначально сообщил .