0

У меня есть BroadcastReceiver, а onReceive вызывается из двух разных методов postExecute в двух разных asyncTasks в двух разных действиях.android - обновить конкретную активность UI from onReceive

У меня есть третье действие, которое работает все время под названием HomeActivity, и я хочу опубликовать некоторый текст в пользовательском интерфейсе HomeActivity из метода onReceive.

Возможно ли это? Я знаю, что параметр контекста - это контекст активности, который поднял onReceive, но я хочу получить доступ к пользовательскому интерфейсу HomeActivity.

Вот код

public class MyBroadcastReceiver extends BroadcastReceiver { 


    @Override 
    public void onReceive(Context context, Intent intent) { 
     // here I want to publish some text to the HomeActivity 
    } 

} 

какие-либо идеи? заранее спасибо

ответ

1

Вы хотите изменить текст в своей текущей деятельности на основе того, что вы получаете в onReceive BroadcastReceiver? Правильно? Один из способов заключается в том, что вы можете использовать LocalBroadcast. См. LocalBroadcast Manager. Для того, чтобы реализовать это, есть отличный пример на how to use LocalBroadcastManager?.

LocalBroadcast Manager - это помощник для регистрации и отправки трансляций намерений локальным объектам в рамках вашего процесса. Данные, которые вы вещаете не оставят ваше приложение, так что не нужно беспокоиться о утечке частного data.`

Вашего HomeActivity может зарегистрирует для этого локального вещания. С MyBroadcastReceiver вы отправляете LocalBroadcast из onReceive (говоря, что я получил сообщение, вы хотите сделать что-то сейчас). Затем внутри вашего Activity вы можете слушать трансляцию. Таким образом, если активность находится на переднем крае/активна, она получит трансляцию, иначе она не будет. Таким образом, всякий раз, когда вы получаете эту локальную трансляцию, вы можете изменить текст и т. Д., Если активность открыта.

+0

благодарит за ваш ответ! скажем, что я поднимаю onReceive из postExecute в одном из других видов деятельности (и в onReceive я отправляю LocalBroadcast на главную деятельность). один код строки после вызова LocalBroadcast, я завершаю другое действие, и осталось только HomeActivity, я увижу текст i HomeAtivity? это считается активностью, являющейся авангардной/активной? спасибо –

+0

До того времени, когда вы не убиваете HomeActivity, вы должны получить местную трансляцию ... –

+0

спасибо большое! помог мне –

Смежные вопросы