Я собираюсь разработать приложение для интернет-магазина. Всякий раз, когда пользователь хочет добавить какой-либо товар в корзину, его необходимо проверить с доступностью товара в магазине, а затем добавить в корзину.
Для этого действия я разработал AsyncTask так:Обновление панели действий в разных действиях после завершения работы AsyncTask
class AddItemTask extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//try to check if item is available to order
availabilityFlag = isItemAvailable(currentItem);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
//what should I do know?
if (availabilityFlag==true){
addItemToShoppingCart(currentItem);
//what should I do now to update Cart Icon?
}
super.onPostExecute(aVoid);
}
}
Если элемент доступен, тележка значок покупок, который расположен на ActionBar должен быть обновлен. Проблема в том, что это обновление может произойти, когда мы покинули текущую активность и переместились на другую. Я хочу знать, как мне обновить значок ActionBar без учета того, какая активность запущена?
Примечание: значок корзины отображается в ActionBar всех видов деятельности.
Вы должны создать глобальный контейнер для ваших данных из asynctask и inResume() в заголовках обновлений действий/фрагментов панели инструментов или панели действий. – winston
Вместо использования 'Void, Void, Void' вы можете использовать' Void, Void, Boolean' и может вернуть доступность в 'doInBackground' и в' onPostExecute' вы можете иметь логическое значение. Насколько это касается вашего вопроса, кажется, что вам нужно использовать какое-либо хранилище либо файл, либо db для хранения ваших данных в автономных целях и службу, которая обновит ваш пользовательский интерфейс. –