Вы можете называть client.subscribe()
столько раз, сколько необходимо для разных тем.
private void setSub()
{
try{
client.subscribe(topic1,0);
client.subscribe(topic2,0);
client.subscribe(topic3,0);
}
catch (MqttException e){
e.printStackTrace();
}
}
Обратный вызов messageArrived()
передается topic
для каждого сообщения, поэтому вы просто настраиваете оператор if чтобы решить, какой textView будет обновляться в зависимости от темы.
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
if (topic.equals(topic1) {
temp.setText(new String(message.getPayload()));
} else if (topic.equals(topic2) {
foo.setText(new String(message.getPayload()));
}
}
Но вы не должны вызывать метод setText()
в обратном вызове, как это происходит на клиентском потоке. Вам нужно посмотреть, как использовать runOnUiThread()
для обновления.
Я добился этого, добавив! Важное после моего кода CSS:
element {
background-color: transparent !important;
}
Прежде всего вы должны проверить код страницы, чтобы узнать класс, к которому применяется фон, затем вы можете установить background: прозрачный (а не background-color, потому что он работает только со значениями цвета). [110 ]