Вы можете использовать шаблон наблюдателя для реализации этого поведения.
Операция B реализует интерфейс IBanksLoader (наблюдатель) и регистрируется в некотором центральном компоненте.Этот центральный компонент должен получить уведомление о завершении AsyncTask и затем вызвать OnBankLoadingComplete () (эквивалентно notify () интерфейса Observer) всех зарегистрированных наблюдателей.
Я бы предложил использовать класс Singleton или Application в качестве центрального компонента, поскольку к ним можно легко получить доступ из любой точки вашего приложения, в том числе из AsyncTask.
Но помните о жизненном цикле вашего приложения.Таким образом, вам может потребоваться отменить регистрацию действия B в какое-то время, например, до того, как оно будет уничтожено.В противном случае центральный компонент вызовет OnBankLoadingComplete () для объекта, который является нулевым, и, таким образом, вызовет исключение NullPointerException.
ОБНОВЛЕНИЕ
public class ActivityB extends Activity implements IBanksLoader {
public void onCreate(){
...
MyApplication app = (MyApplication) getApplication();
app.register(this);
...
}
public void OnBankLoadingComplete(boolean complete){
// your code here ...
}
public void onDestroy(){
MyApplication app = (MyApplication) getApplication();
app.unregister(this);
}
}
public class MyApplication extends Application{
private List<IBanksLoader> observers = new ArrayList<IBanksLoader>();
public void register(IBanksLoader observer){
if(observer != null){
oberservers.add(observer);
}
}
public void unregister(IBanksLoader observer){
if(observer != null){
oberservers.remove(observer);
}
}
public void taskfinished(){
foreach(IBanksLoader bank : observers){
if(bank != null){
bank.OnBankLoadingComplete(true);
}
}
}
}
public class MyTask extends AsyncTask{
...
public void onPostExecute(){
MyApplication app = (MyApplication) getApplication();
app.taskfinished();
}
...
}