Я создал связь между активностью и службой (находится в другом приложении). Когда моя служба получает вызов от активности, она создает новый поток для выполнения задачи. Обычно для выполнения этой задачи требуется 3 секунды.Связь между активностью и службой в другом приложении
Когда сообщение от активности приходит к сервису, мы держим его. И проверьте, является ли ответ этого сообщения нулевым или нет. AnswerTo не равно null. (OK)
public class RemoteService extends Service{ ... private static class IncomingHandler extends Handler implements Observer{ private Message msg; @Override public void handleMessage(Message msg){ //- Hold the arrival message this.msg = msg; //- Check out value of replyTo Messenger replyTo = msg.replyTo; if (replyTo != null) Log.d("tag","replyTo ====///////==== null"); else Log.d("tag","replyTo ======== null"); //- Spawn a new thread to do the task try{ CustomThread thread = new CustomThread(); thread.registerObserver(this); thread.start(); }catch (Exception e) { log.d("tag",e.getMessage()); } } //- When the task is done @Override public void update(int result, String value) { //- Check out value of replyTo Messenger replyTo = msg.replyTo; if (replyTo != null) Log.d("tag","replyTo ====///////==== null"); else Log.d("tag","replyTo ======== null"); //- prepare the data Bundle data = new Bundle(); data.putString("key",value); Message message = Message.obtain(null,2,0,0); message.setData(data); //- Send message to the activity if (replyTo != null) replyTo.send(message); } }
Когда задача выполнена, она уведомляет класс, который ее размещает. Он будет вызывать метод обновление. В методе handleMessage ответ не равен null. Однако, через 3 секунды, в update метод replyTo имеет значение null, и он сработает.
Почему? вероятно, потому что IncomingHandler является статическим классом? или какие еще причины?
Это не правда, я проверяю значение REPLYTO перед вызовом Message.obatain (нуль , ...), значение replyTo по-прежнему равно нулю. Пожалуйста, взгляните на код, который я только что изменил – chipbk10
моя ошибка, я вводил в заблуждение ответ, который является Messenger с целью, которая является Handlet, извините за это – pskink