Местная трансляция в андроид?

У меня есть два вида деятельности ActivityA и ActivityB.

ActivityA запускает фоновый процесс и означает, что он также будет запускать ActivityB

фоновый процесс, запущенный действием A, завершится через некоторое время. Можно ли уведомить активность B о завершении процесса по активности A, если activiyB на переднем плане и activotyA на заднем плане.

2 ответа

Решение

Да, это определенно возможно, и LocalbroadcastMaanager - хороший выбор, как вы это делаете.

В долгосрочном процессе напишите это в конце процесса

            LocalBroadcastManager.getInstance(context).sendBroadcast(
                new Intent("backgroundProcessCallBack"));

И в вашей деятельности вы должны иметь это (внутри):

    LocalBroadcastManager.getInstance(context)
    .registerReceiver(mTaskListener, new IntentFilter("backgroundProcessCallBack"));

где mTaskListener - переменная уровня класса (BroadcastReceiver):

private BroadcastReceiver mTaskListener = new BroadcastReceiver() {

    @Override
    public void onReceive(Context cxt, Intent intent) {
        // Do you stuff here. You got the callBack in your activity
    }
};

затем отмените регистрацию этого получателя в методе onDestroy().

Вы не можете одновременно выполнять два действия. Если ваш фоновый процесс выполняется в ServiceВы можете подписаться на трансляции в Activity А и в Activity Б. Когда работа в Service закончено, отправляет трансляцию - и все Activity (A или B) находится на переднем плане - он получит Broadcast,

Пример кода здесь: программно зарегистрировать приемник вещания

Другие вопросы по тегам