Как отправить события в активность из другого класса? - PullRequest
1 голос
/ 21 ноября 2011

Я пытаюсь отправить события из одного Java-класса в Activity.

Сценарий: будет иметь некоторые данные в нативном, нативный вызовет функцию обратного вызова, которая находится в коде Java, этот класс обрабатываетданные, после обработки мне нужно обновить интерфейс.Я хочу обновить пользовательский интерфейс в одном месте в обработчике деятельности.(Не хочу использовать runOnUiThread () везде).

Мне не удалось правильно отправить события с использованием следующих подходов.
1-й подход:
1) Определить функции для отправки сообщений впоставьте в очередь и вызовите эти функции.
2) Для вызова вышеупомянутых функций (пункт 1) нам нужен контекст, если я поддерживаю статическую переменную для поддержания контекста и его возврата, если действие создается дважды, мы не сможем получитьконтекст записи для первого действия.

public class Activity1 {
    protected static Context myContext = null;
    protected Handler myHandler = null;

    @override 
    public void onCreate() {
        myContext = this;
        myHandler = new Handler();
    }

    public static Context getMyContext() {
        return myContext;
    }

    public void postEvent1() {
        myHandler.sendMessage();
    }
}

2-й подход:
1) Создание обработчика в качестве статической переменной и возвращение этого с помощью статической функции.- Не очень хороший дизайн для раскрытия внутренних переменных.
2) Минусы будут такими же, как описано выше, при создании второго действия.

public class Activity1 {
    protected static Handler myHandler = null;

    @override 
    public void onCreate() {
        myHandler = new Handler();
    }

    public static Context getMyHandler() {
        return myHandler;
    }
}

Возможно ли получить контекст действия без использования статическогопеременные и статические функции?

Пожалуйста, поделитесь знаниями, если кто-нибудь знает.:)

Спасибо и всего наилучшего,
SSuman185

1 Ответ

0 голосов
/ 30 ноября 2011

Я использовал контейнерный класс HashMap для хранения контекстов с ключом.

Я использовал имя класса в качестве ключа.

Когда второе действие пытается зарегистрироваться в классе, содержащем hashmap, оно ответит контекстом уже сохраненного действия (null, если нет).

Таким образом, я могу хранить контексты классов и избегать потери первого контекста активности, если создаю второй.

Пожалуйста, добавьте, если кто-нибудь получит лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...