Как показано ниже, я создал 2 внутренних класса, которые расширяются как Handler
. Я прочитал код в исходных файлах Android, найденных Handler.sendEmptyMessage()
только в очереди в сообщении Looper
в очереди сообщений.Почему этот обработчик Android не работает?
public class MainActivity extends Activity{
private Handler handler = new Handler(Looper.getMainLooper()){
public void handleMessage(Message msg){
//handle method1
}
}
......
}
public class MyService extends Service{
private Handler handler = new Handler(Looper.getMainLooper());
public void test(){
handler.sendEmptyMessage(0x00);
}
......
}
Итак, я запутанный о том, почему в MainActivity
первого Handler
не может обработать сообщение от второго Handler
в MyService
, когда построен с тем же петлителем?
Если вы хотите отправить сообщение от службы к вашей деятельности, это не верно способ сделать это. Вы можете проверить это: http://stackoverflow.com/questions/4300291/example-communication-between-activity-and-service-using-messaging для получения дополнительной информации. – Rotem
@Rotem Не могли бы вы рассказать мне, что произойдет, если у меня есть несколько обработчиков, связанных с одним и тем же петлером? – JY0284
Вы не можете общаться между обработчиками, у каждого обработчика есть своя очередь сообщений - как указано здесь: http://stackoverflow.com/questions/15538270/handlers-initialized-with-looper-getmainlooper-does-not-respond-to -message-cal? answertab = votes # tab-top – Rotem