Местная трансляция в андроид?
У меня есть два вида деятельности 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
,
Пример кода здесь: программно зарегистрировать приемник вещания